home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Shareware World / Utilities / Text Processing / Alpha / Tcl / Modes / latexEngine.tcl < prev    next >
LaTeX Document  |  1996-11-14  |  35.0 KB  |  [TEXT/ALFA]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: LaTeX Document (document/latex).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert LaTeX Document (document/latex) magic Supported
100% dexvert Texinfo Document (document/texInfo) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file LaTeX document text default
99% file TeX document text default
98% file LaTeX document, ISO-8859 text, with CR line terminators default
100% perlTextCheck Likely Text (Perl) default
100% siegfried x-fmt/111 Plain Text File default
100% detectItEasy Format: plain text[CR] default (weak)


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[ALFA]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000010| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000020| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000030| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000040| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 0d 23 23 |########|#####.##|
|00000050| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000060| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000070| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000080| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000090| 23 23 23 23 23 23 23 23 | 23 23 23 0d 23 0d 23 20 |########|###.#.# |
|000000a0| 6c 61 74 65 78 45 6e 67 | 69 6e 65 2e 74 63 6c 20 |latexEng|ine.tcl |
|000000b0| 28 63 61 6c 6c 65 64 20 | 66 72 6f 6d 20 6c 61 74 |(called |from lat|
|000000c0| 65 78 2e 74 63 6c 29 0d | 23 0d 23 20 54 68 65 20 |ex.tcl).|#.# The |
|000000d0| 4c 61 54 65 58 20 65 6e | 67 69 6e 65 0d 23 0d 23 |LaTeX en|gine.#.#|
|000000e0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000000f0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000100| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000110| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000120| 23 23 23 23 23 23 23 23 | 23 23 23 23 0d 23 0d 23 |########|####.#.#|
|00000130| 20 41 75 74 68 6f 72 3a | 20 20 54 6f 6d 20 53 63 | Author:| Tom Sc|
|00000140| 61 76 6f 20 3c 74 72 73 | 63 61 76 6f 40 73 79 72 |avo <trs|cavo@syr|
|00000150| 2e 65 64 75 3e 0d 23 0d | 23 23 23 23 23 23 23 23 |.edu>.#.|########|
|00000160| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000170| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000180| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000190| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001a0| 23 23 23 23 23 0d 23 23 | 23 23 23 23 23 23 23 23 |#####.##|########|
|000001b0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001c0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001d0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001e0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001f0| 23 23 23 0d 0d 0d 23 2d | 2d 2d 2d 2d 2d 2d 2d 2d |###...#-|--------|
|00000200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000240| 2d 0d 23 20 4d 61 72 6b | 20 4d 65 6e 75 3a 0d 23 |-.# Mark| Menu:.#|
|00000250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 0d 23 20 42 75 |--------|--..# Bu|
|000002a0| 67 73 3a 20 20 2d 2d 20 | 77 6f 6e 27 74 20 61 64 |gs: -- |won't ad|
|000002b0| 64 20 61 20 73 65 63 74 | 69 6f 6e 20 28 69 6e 20 |d a sect|ion (in |
|000002c0| 61 20 64 69 66 66 65 72 | 65 6e 74 20 63 68 61 70 |a differ|ent chap|
|000002d0| 74 65 72 29 20 77 69 74 | 68 20 74 68 65 20 73 61 |ter) wit|h the sa|
|000002e0| 6d 65 20 6e 61 6d 65 2e | 0d 23 20 20 20 20 20 20 |me name.|.# |
|000002f0| 20 20 2d 2d 20 73 68 6f | 75 6c 64 20 69 67 6e 6f | -- sho|uld igno|
|00000300| 72 65 20 63 6f 6d 6d 65 | 6e 74 73 2c 20 62 75 74 |re comme|nts, but|
|00000310| 20 64 6f 65 73 6e 27 74 | 2e 0d 23 20 20 20 20 20 | doesn't|..# |
|00000320| 20 20 20 2d 2d 20 61 20 | 73 65 63 74 69 6f 6e 69 | -- a |sectioni|
|00000330| 6e 67 20 63 6f 6d 6d 61 | 6e 64 20 6d 75 73 74 20 |ng comma|nd must |
|00000340| 62 65 20 6f 6e 20 61 20 | 6c 69 6e 65 20 62 79 20 |be on a |line by |
|00000350| 69 74 73 65 6c 66 2e 0d | 70 72 6f 63 20 54 65 58 |itself..|proc TeX|
|00000360| 4d 61 72 6b 46 69 6c 65 | 20 7b 7d 20 7b 0d 09 73 |MarkFile| {} {..s|
|00000370| 65 74 20 70 6f 73 20 30 | 0d 09 73 65 74 20 6c 65 |et pos 0|..set le|
|00000380| 61 64 65 72 20 7b 7d 0d | 23 20 09 73 65 74 20 65 |ader {}.|# .set e|
|00000390| 78 70 20 7b 5e 5c 5c 28 | 28 73 75 62 29 2a 73 65 |xp {^\\(|(sub)*se|
|000003a0| 63 74 69 6f 6e 7c 63 68 | 61 70 74 65 72 7c 69 6e |ction|ch|apter|in|
|000003b0| 70 75 74 7c 69 6e 63 6c | 75 64 65 7c 75 73 65 70 |put|incl|ude|usep|
|000003c0| 61 63 6b 61 67 65 29 28 | 5c 5b 2e 2a 5c 5d 7c 5c |ackage)(|\[.*\]|\|
|000003d0| 2a 29 3f 7b 28 2e 2a 29 | 7d 7d 0d 23 20 56 69 6e |*)?{(.*)|}}.# Vin|
|000003e0| 63 65 27 73 20 69 6d 70 | 72 6f 76 65 6d 65 6e 74 |ce's imp|rovement|
|000003f0| 20 28 62 75 74 20 64 6f | 65 73 6e 27 74 20 61 6c | (but do|esn't al|
|00000400| 6c 6f 77 20 65 6d 62 65 | 64 64 65 64 20 62 72 61 |low embe|dded bra|
|00000410| 63 65 73 29 3a 0d 23 20 | 09 73 65 74 20 65 78 70 |ces):.# |.set exp|
|00000420| 20 7b 5c 5c 28 28 73 75 | 62 29 2a 73 65 63 74 69 | {\\((su|b)*secti|
|00000430| 6f 6e 7c 63 68 61 70 74 | 65 72 7c 69 6e 70 75 74 |on|chapt|er|input|
|00000440| 7c 69 6e 63 6c 75 64 65 | 7c 75 73 65 70 61 63 6b ||include||usepack|
|00000450| 61 67 65 29 28 5c 5b 2e | 2a 5c 5d 7c 5c 2a 29 3f |age)(\[.|*\]|\*)?|
|00000460| 7b 5b 5e 5c 7b 5c 7d 5d | 2a 7d 7d 0d 09 73 65 74 |{[^\{\}]|*}}..set|
|00000470| 20 65 78 70 20 7b 5c 5c | 28 28 73 75 62 29 2a 73 | exp {\\|((sub)*s|
|00000480| 65 63 74 69 6f 6e 7c 63 | 68 61 70 74 65 72 7c 69 |ection|c|hapter|i|
|00000490| 6e 70 75 74 7c 69 6e 63 | 6c 75 64 65 7c 75 73 65 |nput|inc|lude|use|
|000004a0| 70 61 63 6b 61 67 65 29 | 28 5c 5b 2e 2a 5c 5d 7c |package)|(\[.*\]||
|000004b0| 5c 2a 29 3f 7b 28 2e 2a | 29 7d 7d 0d 23 20 09 73 |\*)?{(.*|)}}.# .s|
|000004c0| 65 74 20 65 78 70 20 7b | 5e 5b 5e 25 5d 2a 5c 5c |et exp {|^[^%]*\\|
|000004d0| 28 28 73 75 62 29 2a 73 | 65 63 74 69 6f 6e 7c 63 |((sub)*s|ection|c|
|000004e0| 68 61 70 74 65 72 7c 69 | 6e 70 75 74 7c 69 6e 63 |hapter|i|nput|inc|
|000004f0| 6c 75 64 65 7c 75 73 65 | 70 61 63 6b 61 67 65 29 |lude|use|package)|
|00000500| 28 5c 5b 2e 2a 5c 5d 7c | 5c 2a 29 3f 7b 28 2e 2a |(\[.*\]||\*)?{(.*|
|00000510| 29 7d 7d 0d 09 77 68 69 | 6c 65 20 7b 20 21 5b 63 |)}}..whi|le { ![c|
|00000520| 61 74 63 68 20 7b 73 65 | 61 72 63 68 20 2d 73 20 |atch {se|arch -s |
|00000530| 2d 66 20 31 20 2d 72 20 | 31 20 2d 6d 20 30 20 2d |-f 1 -r |1 -m 0 -|
|00000540| 69 20 30 20 24 65 78 70 | 20 24 70 6f 73 7d 20 72 |i 0 $exp| $pos} r|
|00000550| 65 73 5d 20 7d 20 7b 0d | 09 09 73 65 74 20 73 74 |es] } {.|..set st|
|00000560| 61 72 74 20 5b 6c 69 6e | 64 65 78 20 24 72 65 73 |art [lin|dex $res|
|00000570| 20 30 5d 0d 09 09 73 65 | 74 20 65 6e 64 20 5b 6c | 0]...se|t end [l|
|00000580| 69 6e 64 65 78 20 24 72 | 65 73 20 31 5d 0d 09 09 |index $r|es 1]...|
|00000590| 73 65 74 20 63 6d 64 20 | 5b 67 65 74 54 65 78 74 |set cmd |[getText|
|000005a0| 20 24 73 74 61 72 74 20 | 24 65 6e 64 5d 0d 09 09 | $start |$end]...|
|000005b0| 69 66 20 7b 20 5b 72 65 | 67 65 78 70 20 7b 5c 7b |if { [re|gexp {\{|
|000005c0| 28 2e 2a 29 5c 7d 7d 20 | 24 63 6d 64 20 64 75 6d |(.*)\}} |$cmd dum|
|000005d0| 6d 79 20 61 72 67 5d 20 | 7d 20 7b 0d 09 09 09 73 |my arg] |} {....s|
|000005e0| 65 74 20 69 74 65 6d 20 | 22 22 0d 09 09 09 73 65 |et item |""....se|
|000005f0| 74 20 63 6d 64 4e 61 6d | 65 20 5b 65 78 74 72 61 |t cmdNam|e [extra|
|00000600| 63 74 43 6f 6d 6d 61 6e | 64 4e 61 6d 65 20 24 63 |ctComman|dName $c|
|00000610| 6d 64 5d 0d 09 09 09 69 | 66 20 7b 20 5b 72 65 67 |md]....i|f { [reg|
|00000620| 65 78 70 20 7b 28 28 73 | 75 62 29 2a 29 73 65 63 |exp {((s|ub)*)sec|
|00000630| 74 69 6f 6e 7d 20 24 63 | 6d 64 4e 61 6d 65 20 64 |tion} $c|mdName d|
|00000640| 75 6d 6d 79 20 70 72 65 | 66 69 78 5d 20 7d 20 74 |ummy pre|fix] } t|
|00000650| 68 65 6e 20 7b 0d 09 09 | 09 09 23 20 69 6e 64 65 |hen {...|..# inde|
|00000660| 6e 74 20 5c 28 73 75 62 | 29 2a 73 65 63 74 69 6f |nt \(sub|)*sectio|
|00000670| 6e 20 6f 72 20 5c 28 73 | 75 62 29 2a 73 65 63 74 |n or \(s|ub)*sect|
|00000680| 69 6f 6e 2a 3a 0d 09 09 | 09 09 73 65 74 20 73 70 |ion*:...|..set sp|
|00000690| 61 63 65 73 20 5b 65 78 | 70 72 20 32 20 2a 20 5b |aces [ex|pr 2 * [|
|000006a0| 73 74 72 69 6e 67 20 6c | 65 6e 67 74 68 20 24 70 |string l|ength $p|
|000006b0| 72 65 66 69 78 5d 20 2f | 20 33 5d 0d 09 09 09 09 |refix] /| 3].....|
|000006c0| 61 70 70 65 6e 64 20 69 | 74 65 6d 20 24 6c 65 61 |append i|tem $lea|
|000006d0| 64 65 72 20 5b 66 6f 72 | 6d 61 74 20 22 25 24 73 |der [for|mat "%$s|
|000006e0| 70 61 63 65 73 5c 73 22 | 20 22 22 5d 0d 09 09 09 |paces\s"| ""]....|
|000006f0| 7d 20 65 6c 73 65 69 66 | 20 7b 20 5b 72 65 67 65 |} elseif| { [rege|
|00000700| 78 70 20 7b 63 68 61 70 | 74 65 72 7d 20 24 63 6d |xp {chap|ter} $cm|
|00000710| 64 4e 61 6d 65 5d 20 7d | 20 74 68 65 6e 20 7b 0d |dName] }| then {.|
|00000720| 09 09 09 09 23 20 69 66 | 20 5c 63 68 61 70 74 65 |....# if| \chapte|
|00000730| 72 20 6f 72 20 5c 63 68 | 61 70 74 65 72 2a 2c 20 |r or \ch|apter*, |
|00000740| 69 6e 64 65 6e 74 20 6e | 65 78 74 20 5c 28 73 75 |indent n|ext \(su|
|00000750| 62 29 2a 73 65 63 74 69 | 6f 6e 3a 0d 09 09 09 09 |b)*secti|on:.....|
|00000760| 73 65 74 20 6c 65 61 64 | 65 72 20 7b 20 20 7d 0d |set lead|er { }.|
|00000770| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0d 09 09 09 09 |...} els|e {.....|
|00000780| 23 20 6d 61 72 6b 20 5c | 69 6e 70 75 74 2c 20 5c |# mark \|input, \|
|00000790| 69 6e 63 6c 75 64 65 2c | 20 61 6e 64 20 5c 75 73 |include,| and \us|
|000007a0| 65 70 61 63 6b 61 67 65 | 20 28 56 44 29 3a 0d 09 |epackage| (VD):..|
|000007b0| 09 09 09 61 70 70 65 6e | 64 20 69 74 65 6d 20 22 |...appen|d item "|
|000007c0| c8 22 0d 09 09 09 7d 0d | 09 09 09 23 20 72 65 6d |."....}.|...# rem|
|000007d0| 6f 76 65 20 61 6c 6c 20 | 73 75 70 65 72 66 6c 75 |ove all |superflu|
|000007e0| 6f 75 73 20 77 68 69 74 | 65 73 70 61 63 65 20 28 |ous whit|espace (|
|000007f0| 57 54 50 29 3a 0d 09 09 | 09 72 65 67 73 75 62 20 |WTP):...|.regsub |
|00000800| 2d 61 6c 6c 20 22 5c 5b | 5c 20 5c 72 5c 74 5c 5d |-all "\[|\ \r\t\]|
|00000810| 5c 2b 22 20 24 61 72 67 | 20 7b 20 7d 20 61 72 67 |\+" $arg| { } arg|
|00000820| 0d 09 09 09 23 20 6c 69 | 6d 69 74 20 74 68 65 20 |....# li|mit the |
|00000830| 77 69 64 74 68 20 6f 66 | 20 74 68 65 20 6d 65 6e |width of| the men|
|00000840| 75 20 69 74 65 6d 20 28 | 57 54 50 29 3a 0d 09 09 |u item (|WTP):...|
|00000850| 09 69 66 20 7b 20 5b 73 | 74 72 69 6e 67 20 6c 65 |.if { [s|tring le|
|00000860| 6e 67 74 68 20 24 61 72 | 67 5d 20 3e 20 33 30 20 |ngth $ar|g] > 30 |
|00000870| 7d 20 7b 20 73 65 74 20 | 61 72 67 20 22 5b 73 74 |} { set |arg "[st|
|00000880| 72 69 6e 67 20 72 61 6e | 67 65 20 24 61 72 67 20 |ring ran|ge $arg |
|00000890| 30 20 32 36 5d c9 22 20 | 7d 0d 09 09 09 23 20 62 |0 26]." |}....# b|
|000008a0| 75 69 6c 64 20 74 68 65 | 20 6d 65 6e 75 20 69 74 |uild the| menu it|
|000008b0| 65 6d 3a 0d 09 09 09 61 | 70 70 65 6e 64 20 69 74 |em:....a|ppend it|
|000008c0| 65 6d 20 24 61 72 67 0d | 09 09 09 23 20 72 65 6d |em $arg.|...# rem|
|000008d0| 6f 76 65 20 6f 72 20 63 | 6f 6e 76 65 72 74 20 61 |ove or c|onvert a|
|000008e0| 6c 6c 20 6d 65 74 61 2d | 63 68 61 72 61 63 74 65 |ll meta-|characte|
|000008f0| 72 73 3a 0d 23 20 09 09 | 09 72 65 67 73 75 62 20 |rs:.# ..|.regsub |
|00000900| 2d 61 6c 6c 20 7b 5b 3c | 28 5d 7d 20 24 69 74 65 |-all {[<|(]} $ite|
|00000910| 6d 20 7b 7d 20 69 74 65 | 6d 0d 23 20 09 09 09 72 |m {} ite|m.# ...r|
|00000920| 65 67 73 75 62 20 2d 61 | 6c 6c 20 7b 5b 29 3e 5d |egsub -a|ll {[)>]|
|00000930| 7d 20 24 69 74 65 6d 20 | 7b 7d 20 69 74 65 6d 0d |} $item |{} item.|
|00000940| 23 20 09 09 09 72 65 67 | 73 75 62 20 2d 61 6c 6c |# ...reg|sub -all|
|00000950| 20 7b 5b 21 5e 2f 5d 7d | 20 24 69 74 65 6d 20 7b | {[!^/]}| $item {|
|00000960| 7c 7d 20 69 74 65 6d 0d | 09 09 09 23 20 63 72 65 ||} item.|...# cre|
|00000970| 61 74 65 20 74 68 65 20 | 6d 61 72 6b 3a 0d 09 09 |ate the |mark:...|
|00000980| 09 73 65 74 4e 61 6d 65 | 64 4d 61 72 6b 20 24 69 |.setName|dMark $i|
|00000990| 74 65 6d 20 5b 6c 69 6e | 65 53 74 61 72 74 20 5b |tem [lin|eStart [|
|000009a0| 65 78 70 72 20 24 73 74 | 61 72 74 20 2d 20 31 5d |expr $st|art - 1]|
|000009b0| 5d 20 24 73 74 61 72 74 | 20 24 73 74 61 72 74 0d |] $start| $start.|
|000009c0| 09 09 7d 0d 09 09 73 65 | 74 20 70 6f 73 20 5b 65 |..}...se|t pos [e|
|000009d0| 78 70 72 20 24 65 6e 64 | 20 2b 20 31 5d 0d 09 7d |xpr $end| + 1]..}|
|000009e0| 0d 7d 0d 0d 23 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.}..#---|--------|
|000009f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00000a30| 23 20 43 6f 6d 6d 61 6e | 64 2d 64 6f 75 62 6c 65 |# Comman|d-double|
|00000a40| 2d 63 6c 69 63 6b 69 6e | 67 3a 0d 23 2d 2d 2d 2d |-clickin|g:.#----|
|00000a50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000a90| 2d 2d 2d 2d 2d 2d 0d 23 | 20 49 6e 20 54 65 58 20 |------.#| In TeX |
|00000aa0| 6d 6f 64 65 2c 20 75 73 | 65 20 63 6d 64 2d 64 6f |mode, us|e cmd-do|
|00000ab0| 75 62 6c 65 2d 63 6c 69 | 63 6b 73 20 74 6f 20 66 |uble-cli|cks to f|
|00000ac0| 6f 6c 6c 6f 77 20 72 65 | 66 65 72 65 6e 63 65 73 |ollow re|ferences|
|00000ad0| 20 61 6e 64 20 63 69 74 | 61 74 69 6f 6e 73 2c 0d | and cit|ations,.|
|00000ae0| 23 20 6f 72 20 6f 70 65 | 6e 20 69 6e 70 75 74 20 |# or ope|n input |
|00000af0| 66 69 6c 65 73 2e 0d 23 | 0d 23 20 28 6f 72 69 67 |files..#|.# (orig|
|00000b00| 69 6e 61 6c 6c 79 20 77 | 72 69 74 74 65 6e 20 62 |inally w|ritten b|
|00000b10| 79 20 54 6f 6d 20 50 6f | 6c 6c 61 72 64 20 61 6e |y Tom Po|llard an|
|00000b20| 64 20 41 6e 64 72 65 61 | 73 20 41 6d 61 6e 6e 29 |d Andrea|s Amann)|
|00000b30| 0d 23 0d 23 20 52 65 6d | 61 69 6e 69 6e 67 20 62 |.#.# Rem|aining b|
|00000b40| 75 67 73 3a 0d 23 20 20 | 20 2d 20 73 65 61 72 63 |ugs:.# | - searc|
|00000b50| 68 20 69 73 20 73 75 63 | 63 65 73 73 66 75 6c 20 |h is suc|cessful |
|00000b60| 65 76 65 6e 20 69 66 20 | 74 68 65 20 70 61 74 74 |even if |the patt|
|00000b70| 65 72 6e 20 69 73 20 63 | 6f 6d 6d 65 6e 74 65 64 |ern is c|ommented|
|00000b80| 20 6f 75 74 0d 23 20 20 | 20 20 20 28 77 68 69 63 | out.# | (whic|
|00000b90| 68 20 69 73 20 61 20 62 | 75 67 20 6f 72 20 61 20 |h is a b|ug or a |
|00000ba0| 66 65 61 74 75 72 65 2c | 20 64 65 70 65 6e 64 69 |feature,| dependi|
|00000bb0| 6e 67 20 68 6f 77 20 79 | 6f 75 20 6c 6f 6f 6b 20 |ng how y|ou look |
|00000bc0| 61 74 20 69 74 29 0d 09 | 0d 70 72 6f 63 20 54 65 |at it)..|.proc Te|
|00000bd0| 58 44 62 6c 43 6c 69 63 | 6b 20 7b 66 72 6f 6d 20 |XDblClic|k {from |
|00000be0| 74 6f 7d 20 7b 0d 09 67 | 6c 6f 62 61 6c 20 54 65 |to} {..g|lobal Te|
|00000bf0| 58 6d 6f 64 65 56 61 72 | 73 20 54 65 58 53 65 61 |XmodeVar|s TeXSea|
|00000c00| 72 63 68 50 61 74 68 0d | 0d 09 73 65 74 20 62 69 |rchPath.|..set bi|
|00000c10| 62 50 61 74 20 22 5c 5c | 62 69 62 6c 69 6f 67 72 |bPat "\\|bibliogr|
|00000c20| 61 70 68 79 5c 7b 22 0d | 09 73 65 74 20 74 68 65 |aphy\{".|.set the|
|00000c30| 42 69 62 50 61 74 20 22 | 5c 5c 62 65 67 69 6e 5c |BibPat "|\\begin\|
|00000c40| 7b 74 68 65 62 69 62 6c | 69 6f 67 72 61 70 68 79 |{thebibl|iography|
|00000c50| 22 0d 09 73 65 74 20 62 | 69 62 69 74 65 6d 50 61 |"..set b|ibitemPa|
|00000c60| 74 20 7b 5c 62 69 62 69 | 74 65 6d 28 5c 5b 5b 5e |t {\bibi|tem(\[[^|
|00000c70| 5c 5d 2a 5c 5d 29 3f 5c | 7b 7d 0d 09 73 65 74 20 |\]*\])?\|{}..set |
|00000c80| 6c 61 62 65 6c 50 61 74 | 20 22 5c 5c 6c 61 62 65 |labelPat| "\\labe|
|00000c90| 6c 5c 7b 22 0d 20 09 73 | 65 74 20 62 69 62 54 6f |l\{". .s|et bibTo|
|00000ca0| 70 50 61 74 20 7b 40 28 | 5b 61 2d 7a 41 2d 5a 5d |pPat {@(|[a-zA-Z]|
|00000cb0| 2b 29 5b 5c 7b 5c 28 5d | 5b 20 09 5d 2a 7d 0d 09 |+)[\{\(]|[ .]*}..|
|00000cc0| 0d 09 23 20 45 78 74 65 | 6e 64 20 73 65 6c 65 63 |..# Exte|nd selec|
|00000cd0| 74 69 6f 6e 20 74 6f 20 | 6c 61 72 67 65 73 74 20 |tion to |largest |
|00000ce0| 73 74 72 69 6e 67 20 64 | 65 6c 69 6d 69 74 65 64 |string d|elimited|
|00000cf0| 20 62 79 20 63 6f 6d 6d | 61 73 20 6f 72 20 63 75 | by comm|as or cu|
|00000d00| 72 6c 79 2d 62 72 61 63 | 65 73 0d 09 73 65 74 20 |rly-brac|es..set |
|00000d10| 74 65 78 74 20 5b 73 74 | 72 69 6e 67 20 74 72 69 |text [st|ring tri|
|00000d20| 6d 20 5b 65 76 61 6c 20 | 67 65 74 54 65 78 74 20 |m [eval |getText |
|00000d30| 5b 54 65 58 45 78 74 65 | 6e 64 41 72 67 20 24 66 |[TeXExte|ndArg $f|
|00000d40| 72 6f 6d 20 24 74 6f 5d | 5d 5d 0d 0d 09 23 20 51 |rom $to]|]]...# Q|
|00000d50| 75 6f 74 65 20 72 65 67 | 65 78 70 2d 61 63 74 69 |uote reg|exp-acti|
|00000d60| 76 65 20 63 68 61 72 61 | 63 74 65 72 73 20 69 6e |ve chara|cters in|
|00000d70| 20 63 61 73 65 20 77 65 | 20 75 73 65 20 24 74 65 | case we| use $te|
|00000d80| 78 74 20 69 6e 20 61 20 | 72 65 67 65 78 70 20 73 |xt in a |regexp s|
|00000d90| 65 61 72 63 68 0d 09 73 | 65 74 20 71 74 65 78 74 |earch..s|et qtext|
|00000da0| 20 5b 71 75 6f 74 65 45 | 78 70 72 20 24 74 65 78 | [quoteE|xpr $tex|
|00000db0| 74 5d 0d 09 0d 09 23 20 | 53 65 74 20 24 63 6d 64 |t]....# |Set $cmd|
|00000dc0| 20 74 6f 20 54 65 58 20 | 63 6f 6d 6d 61 6e 64 20 | to TeX |command |
|00000dd0| 66 6f 72 20 77 68 69 63 | 68 20 74 68 65 20 73 65 |for whic|h the se|
|00000de0| 6c 65 63 74 69 6f 6e 20 | 69 73 20 61 6e 20 61 72 |lection |is an ar|
|00000df0| 67 75 6d 65 6e 74 2c 20 | 62 75 74 0d 09 23 20 6f |gument, |but..# o|
|00000e00| 6e 6c 79 20 69 66 20 75 | 73 65 72 20 63 6c 69 63 |nly if u|ser clic|
|00000e10| 6b 65 64 20 6f 6e 20 61 | 20 76 61 6c 69 64 20 63 |ked on a| valid c|
|00000e20| 6f 6d 6d 61 6e 64 20 61 | 72 67 75 6d 65 6e 74 2e |ommand a|rgument.|
|00000e30| 0d 09 73 65 74 20 63 6d | 64 20 7b 7d 0d 09 69 66 |..set cm|d {}..if|
|00000e40| 20 7b 5b 73 65 74 20 6d | 74 63 68 20 5b 66 69 6e | {[set m|tch [fin|
|00000e50| 64 43 6f 6d 6d 61 6e 64 | 57 69 74 68 50 61 72 74 |dCommand|WithPart|
|00000e60| 73 20 24 66 72 6f 6d 20 | 30 5d 5d 20 21 3d 20 22 |s $from |0]] != "|
|00000e70| 22 7d 20 7b 0d 09 09 73 | 65 74 20 62 65 67 20 5b |"} {...s|et beg [|
|00000e80| 6c 69 6e 64 65 78 20 24 | 6d 74 63 68 20 30 5d 0d |lindex $|mtch 0].|
|00000e90| 09 09 73 65 74 20 61 72 | 67 20 5b 6c 69 6e 64 65 |..set ar|g [linde|
|00000ea0| 78 20 24 6d 74 63 68 20 | 32 5d 0d 09 09 73 65 74 |x $mtch |2]...set|
|00000eb0| 20 65 6e 64 20 5b 6c 69 | 6e 64 65 78 20 24 6d 74 | end [li|ndex $mt|
|00000ec0| 63 68 20 33 5d 0d 09 09 | 23 20 4d 61 6b 65 20 73 |ch 3]...|# Make s|
|00000ed0| 75 72 65 20 74 68 65 20 | 75 73 65 72 20 63 6c 69 |ure the |user cli|
|00000ee0| 63 6b 65 64 20 77 69 74 | 68 69 6e 20 61 20 54 65 |cked wit|hin a Te|
|00000ef0| 58 20 61 72 67 75 6d 65 | 6e 74 20 61 6e 64 20 6e |X argume|nt and n|
|00000f00| 6f 74 0d 09 09 23 20 6f | 6e 20 74 68 65 20 63 6f |ot...# o|n the co|
|00000f10| 6d 6d 61 6e 64 20 6e 61 | 6d 65 20 69 74 73 65 6c |mmand na|me itsel|
|00000f20| 66 0d 09 09 69 66 20 7b | 24 66 72 6f 6d 20 3e 20 |f...if {|$from > |
|00000f30| 24 61 72 67 20 26 26 20 | 24 74 6f 20 3c 20 24 65 |$arg && |$to < $e|
|00000f40| 6e 64 7d 20 7b 0d 09 09 | 09 73 65 74 20 63 6d 64 |nd} {...|.set cmd|
|00000f50| 20 5b 65 78 74 72 61 63 | 74 43 6f 6d 6d 61 6e 64 | [extrac|tCommand|
|00000f60| 4e 61 6d 65 20 5b 67 65 | 74 54 65 78 74 20 24 62 |Name [ge|tText $b|
|00000f70| 65 67 20 24 61 72 67 5d | 5d 0d 09 09 7d 0d 09 7d |eg $arg]|]...}..}|
|00000f80| 0d 09 0d 09 23 20 5c 63 | 69 74 65 2c 20 5c 6e 6f |....# \c|ite, \no|
|00000f90| 63 69 74 65 2c 20 65 74 | 63 2e 0d 09 69 66 20 7b |cite, et|c...if {|
|00000fa0| 5b 6c 73 65 61 72 63 68 | 20 2d 65 78 61 63 74 20 |[lsearch| -exact |
|00000fb0| 24 54 65 58 6d 6f 64 65 | 56 61 72 73 28 63 69 74 |$TeXmode|Vars(cit|
|00000fc0| 65 43 6f 6d 6d 61 6e 64 | 73 29 20 24 63 6d 64 5d |eCommand|s) $cmd]|
|00000fd0| 20 3e 3d 20 30 7d 20 7b | 0d 09 09 0d 09 09 23 20 | >= 0} {|......# |
|00000fe0| 43 68 65 63 6b 20 66 69 | 72 73 74 20 66 6f 72 20 |Check fi|rst for |
|00000ff0| 61 20 5c 74 68 65 62 69 | 62 6c 69 6f 67 72 61 70 |a \thebi|bliograp|
|00001000| 68 79 20 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 3a 0d |hy envir|onment:.|
|00001010| 09 09 69 66 20 7b 21 5b | 63 61 74 63 68 20 7b 73 |..if {![|catch {s|
|00001020| 65 61 72 63 68 20 2d 66 | 20 30 20 2d 72 20 30 20 |earch -f| 0 -r 0 |
|00001030| 2d 6d 20 30 20 2d 73 20 | 24 74 68 65 42 69 62 50 |-m 0 -s |$theBibP|
|00001040| 61 74 20 5b 6d 61 78 50 | 6f 73 5d 7d 20 6d 74 63 |at [maxP|os]} mtc|
|00001050| 68 5d 7d 20 7b 0d 09 09 | 09 73 65 74 20 62 69 62 |h]} {...|.set bib|
|00001060| 50 6f 73 20 5b 6c 69 6e | 64 65 78 20 24 6d 74 63 |Pos [lin|dex $mtc|
|00001070| 68 20 31 5d 0d 09 09 09 | 69 66 20 7b 21 5b 63 61 |h 1]....|if {![ca|
|00001080| 74 63 68 20 7b 73 65 61 | 72 63 68 20 2d 66 20 31 |tch {sea|rch -f 1|
|00001090| 20 2d 72 20 31 20 2d 6d | 20 30 20 2d 73 20 22 24 | -r 1 -m| 0 -s "$|
|000010a0| 62 69 62 69 74 65 6d 50 | 61 74 24 71 74 65 78 74 |bibitemP|at$qtext|
|000010b0| 5c 7d 22 20 24 62 69 62 | 50 6f 73 7d 20 6d 74 63 |\}" $bib|Pos} mtc|
|000010c0| 68 5d 7d 20 7b 0d 09 09 | 09 09 70 75 73 68 4d 61 |h]} {...|..pushMa|
|000010d0| 72 6b 0d 09 09 09 09 65 | 76 61 6c 20 73 65 6c 65 |rk.....e|val sele|
|000010e0| 63 74 20 24 6d 74 63 68 | 0d 09 09 09 09 6d 65 73 |ct $mtch|.....mes|
|000010f0| 73 61 67 65 20 22 70 72 | 65 73 73 20 3c 43 74 6c |sage "pr|ess <Ctl|
|00001100| 20 2e 3e 20 74 6f 20 72 | 65 74 75 72 6e 20 74 6f | .> to r|eturn to|
|00001110| 20 6f 72 69 67 69 6e 61 | 6c 20 63 75 72 73 6f 72 | origina|l cursor|
|00001120| 20 70 6f 73 69 74 69 6f | 6e 22 0d 09 09 09 09 72 | positio|n".....r|
|00001130| 65 74 75 72 6e 0d 09 09 | 09 7d 0d 09 09 7d 0d 09 |eturn...|.}...}..|
|00001140| 09 0d 09 09 23 20 2e 2e | 2e 6f 74 68 65 72 77 69 |....# ..|.otherwi|
|00001150| 73 65 20 67 65 74 20 74 | 68 65 20 62 69 62 20 66 |se get t|he bib f|
|00001160| 69 6c 65 20 6e 61 6d 65 | 28 73 29 20 66 72 6f 6d |ile name|(s) from|
|00001170| 20 61 20 5c 62 69 62 6c | 69 6f 67 72 61 70 68 79 | a \bibl|iography|
|00001180| 20 63 6f 6d 6d 61 6e 64 | 0d 09 09 69 66 20 7b 21 | command|...if {!|
|00001190| 5b 63 61 74 63 68 20 7b | 73 65 61 72 63 68 20 2d |[catch {|search -|
|000011a0| 66 20 30 20 2d 72 20 30 | 20 2d 73 20 2d 6d 20 30 |f 0 -r 0| -s -m 0|
|000011b0| 20 24 62 69 62 50 61 74 | 20 5b 6d 61 78 50 6f 73 | $bibPat| [maxPos|
|000011c0| 5d 7d 20 6d 74 63 68 5d | 7d 20 7b 0d 09 09 09 23 |]} mtch]|} {....#|
|000011d0| 20 47 65 74 20 41 4c 4c | 20 74 68 65 20 62 69 62 | Get ALL| the bib|
|000011e0| 20 66 69 6c 65 20 6e 61 | 6d 65 73 3a 0d 09 09 09 | file na|mes:....|
|000011f0| 73 65 74 20 62 65 67 20 | 5b 6c 69 6e 64 65 78 20 |set beg |[lindex |
|00001200| 24 6d 74 63 68 20 31 5d | 0d 09 09 09 73 65 74 20 |$mtch 1]|....set |
|00001210| 65 6e 64 20 5b 6d 61 74 | 63 68 49 74 20 22 5c 7b |end [mat|chIt "\{|
|00001220| 22 20 24 62 65 67 5d 0d | 09 09 09 73 65 74 20 66 |" $beg].|...set f|
|00001230| 6e 61 6d 65 73 20 22 5b | 73 70 6c 69 74 20 5b 67 |names "[|split [g|
|00001240| 65 74 54 65 78 74 20 24 | 62 65 67 20 24 65 6e 64 |etText $|beg $end|
|00001250| 5d 20 2c 5d 22 0d 09 09 | 09 23 20 43 68 65 63 6b |] ,]"...|.# Check|
|00001260| 20 65 76 65 72 79 20 66 | 69 6c 65 3a 0d 09 09 09 | every f|ile:....|
|00001270| 66 6f 72 65 61 63 68 20 | 66 6e 61 6d 65 20 24 66 |foreach |fname $f|
|00001280| 6e 61 6d 65 73 20 7b 0d | 09 09 09 09 73 65 74 20 |names {.|....set |
|00001290| 66 69 6c 65 6e 61 6d 65 | 20 5b 61 62 73 6f 6c 75 |filename| [absolu|
|000012a0| 74 65 50 61 74 68 20 22 | 24 66 6e 61 6d 65 2e 62 |tePath "|$fname.b|
|000012b0| 69 62 22 5d 0d 09 09 09 | 09 73 65 74 20 73 65 61 |ib"]....|.set sea|
|000012c0| 72 63 68 52 65 73 75 6c | 74 20 5b 73 65 61 72 63 |rchResul|t [searc|
|000012d0| 68 49 6e 46 69 6c 65 20 | 24 66 69 6c 65 6e 61 6d |hInFile |$filenam|
|000012e0| 65 20 24 62 69 62 54 6f | 70 50 61 74 24 71 74 65 |e $bibTo|pPat$qte|
|000012f0| 78 74 20 31 5d 0d 09 09 | 09 09 69 66 20 7b 5b 6c |xt 1]...|..if {[l|
|00001300| 69 6e 64 65 78 20 24 73 | 65 61 72 63 68 52 65 73 |index $s|earchRes|
|00001310| 75 6c 74 20 30 5d 20 3e | 3d 20 30 7d 20 7b 0d 09 |ult 0] >|= 0} {..|
|00001320| 09 09 09 09 6f 70 65 6e | 46 69 6c 65 51 75 69 65 |....open|FileQuie|
|00001330| 74 6c 79 20 24 66 69 6c | 65 6e 61 6d 65 0d 09 09 |tly $fil|ename...|
|00001340| 09 09 09 65 76 61 6c 20 | 73 65 6c 65 63 74 20 24 |...eval |select $|
|00001350| 73 65 61 72 63 68 52 65 | 73 75 6c 74 0d 09 09 09 |searchRe|sult....|
|00001360| 09 09 72 65 74 75 72 6e | 0d 09 09 09 09 7d 09 0d |..return|.....}..|
|00001370| 09 09 09 7d 0d 09 09 09 | 23 20 42 75 69 6c 64 20 |...}....|# Build |
|00001380| 74 68 65 20 54 65 58 20 | 73 65 61 72 63 68 20 70 |the TeX |search p|
|00001390| 61 74 68 3a 0d 09 09 09 | 69 66 20 7b 20 5b 6c 6c |ath:....|if { [ll|
|000013a0| 65 6e 67 74 68 20 24 54 | 65 58 53 65 61 72 63 68 |ength $T|eXSearch|
|000013b0| 50 61 74 68 5d 20 3d 3d | 20 30 20 7d 20 7b 0d 09 |Path] ==| 0 } {..|
|000013c0| 09 09 09 6d 65 73 73 61 | 67 65 20 22 62 75 69 6c |...messa|ge "buil|
|000013d0| 64 69 6e 67 20 54 65 58 | 20 73 65 61 72 63 68 20 |ding TeX| search |
|000013e0| 70 61 74 68 c9 22 0d 09 | 09 09 09 73 65 74 20 54 |path."..|...set T|
|000013f0| 65 58 53 65 61 72 63 68 | 50 61 74 68 20 5b 62 75 |eXSearch|Path [bu|
|00001400| 69 6c 64 54 65 58 53 65 | 61 72 63 68 50 61 74 68 |ildTeXSe|archPath|
|00001410| 5d 0d 09 09 09 09 6d 65 | 73 73 61 67 65 20 22 22 |].....me|ssage ""|
|00001420| 0d 09 09 09 7d 0d 09 09 | 09 23 20 43 68 65 63 6b |....}...|.# Check|
|00001430| 20 65 76 65 72 79 20 66 | 69 6c 65 20 69 6e 20 74 | every f|ile in t|
|00001440| 68 65 20 54 65 58 20 73 | 65 61 72 63 68 20 70 61 |he TeX s|earch pa|
|00001450| 74 68 3a 0d 09 09 09 66 | 6f 72 65 61 63 68 20 66 |th:....f|oreach f|
|00001460| 6e 61 6d 65 20 24 66 6e | 61 6d 65 73 20 7b 0d 09 |name $fn|ames {..|
|00001470| 09 09 09 66 6f 72 65 61 | 63 68 20 66 6f 6c 64 65 |...forea|ch folde|
|00001480| 72 20 24 54 65 58 53 65 | 61 72 63 68 50 61 74 68 |r $TeXSe|archPath|
|00001490| 20 7b 0d 09 09 09 09 09 | 73 65 74 20 66 69 6c 65 | {......|set file|
|000014a0| 6e 61 6d 65 20 22 24 66 | 6f 6c 64 65 72 24 66 6e |name "$f|older$fn|
|000014b0| 61 6d 65 2e 62 69 62 22 | 0d 09 09 09 09 09 73 65 |ame.bib"|......se|
|000014c0| 74 20 73 65 61 72 63 68 | 52 65 73 75 6c 74 20 5b |t search|Result [|
|000014d0| 73 65 61 72 63 68 49 6e | 46 69 6c 65 20 24 66 69 |searchIn|File $fi|
|000014e0| 6c 65 6e 61 6d 65 20 24 | 62 69 62 54 6f 70 50 61 |lename $|bibTopPa|
|000014f0| 74 24 71 74 65 78 74 20 | 31 5d 0d 09 09 09 09 09 |t$qtext |1]......|
|00001500| 69 66 20 7b 5b 6c 69 6e | 64 65 78 20 24 73 65 61 |if {[lin|dex $sea|
|00001510| 72 63 68 52 65 73 75 6c | 74 20 30 5d 20 3e 3d 20 |rchResul|t 0] >= |
|00001520| 30 7d 20 7b 0d 09 09 09 | 09 09 09 6f 70 65 6e 46 |0} {....|...openF|
|00001530| 69 6c 65 51 75 69 65 74 | 6c 79 20 24 66 69 6c 65 |ileQuiet|ly $file|
|00001540| 6e 61 6d 65 0d 09 09 09 | 09 09 09 65 76 61 6c 20 |name....|...eval |
|00001550| 73 65 6c 65 63 74 20 24 | 73 65 61 72 63 68 52 65 |select $|searchRe|
|00001560| 73 75 6c 74 0d 09 09 09 | 09 09 09 72 65 74 75 72 |sult....|...retur|
|00001570| 6e 0d 09 09 09 09 09 7d | 09 0d 09 09 09 09 7d 0d |n......}|......}.|
|00001580| 09 09 09 7d 0d 09 09 09 | 62 65 65 70 0d 09 09 09 |...}....|beep....|
|00001590| 6d 65 73 73 61 67 65 20 | 22 63 61 6e 27 74 20 66 |message |"can't f|
|000015a0| 69 6e 64 20 5c 22 24 74 | 65 78 74 5c 22 20 69 6e |ind \"$t|ext\" in|
|000015b0| 20 74 68 65 20 2e 62 69 | 62 20 66 69 6c 65 28 73 | the .bi|b file(s|
|000015c0| 29 22 0d 09 09 09 0d 09 | 09 7d 20 65 6c 73 65 20 |)"......|.} else |
|000015d0| 7b 0d 09 09 09 62 65 65 | 70 0d 09 09 09 6d 65 73 |{....bee|p....mes|
|000015e0| 73 61 67 65 20 22 63 61 | 6e 27 74 20 66 69 6e 64 |sage "ca|n't find|
|000015f0| 20 61 20 5c 5c 62 69 62 | 6c 69 6f 67 72 61 70 68 | a \\bib|liograph|
|00001600| 79 22 0d 09 09 7d 0d 09 | 09 0d 09 23 20 5c 72 65 |y"...}..|...# \re|
|00001610| 66 2c 20 5c 70 61 67 65 | 72 65 66 2c 20 65 74 63 |f, \page|ref, etc|
|00001620| 2e 0d 09 7d 20 65 6c 73 | 65 69 66 20 7b 5b 6c 73 |...} els|eif {[ls|
|00001630| 65 61 72 63 68 20 2d 65 | 78 61 63 74 20 24 54 65 |earch -e|xact $Te|
|00001640| 58 6d 6f 64 65 56 61 72 | 73 28 72 65 66 43 6f 6d |XmodeVar|s(refCom|
|00001650| 6d 61 6e 64 73 29 20 24 | 63 6d 64 5d 20 3e 3d 20 |mands) $|cmd] >= |
|00001660| 30 7d 20 7b 0d 09 09 69 | 66 20 7b 21 5b 63 61 74 |0} {...i|f {![cat|
|00001670| 63 68 20 7b 73 65 61 72 | 63 68 20 2d 66 20 31 20 |ch {sear|ch -f 1 |
|00001680| 2d 72 20 30 20 2d 6d 20 | 30 20 2d 73 20 22 24 6c |-r 0 -m |0 -s "$l|
|00001690| 61 62 65 6c 50 61 74 24 | 74 65 78 74 5c 7d 22 20 |abelPat$|text\}" |
|000016a0| 30 7d 20 6d 74 63 68 5d | 7d 20 7b 0d 09 09 09 70 |0} mtch]|} {....p|
|000016b0| 75 73 68 4d 61 72 6b 0d | 09 09 09 65 76 61 6c 20 |ushMark.|...eval |
|000016c0| 73 65 6c 65 63 74 20 24 | 6d 74 63 68 0d 09 09 09 |select $|mtch....|
|000016d0| 6d 65 73 73 61 67 65 20 | 22 70 72 65 73 73 20 3c |message |"press <|
|000016e0| 43 74 6c 20 2e 3e 20 74 | 6f 20 72 65 74 75 72 6e |Ctl .> t|o return|
|000016f0| 20 74 6f 20 6f 72 69 67 | 69 6e 61 6c 20 63 75 72 | to orig|inal cur|
|00001700| 73 6f 72 20 70 6f 73 69 | 74 69 6f 6e 22 0d 09 09 |sor posi|tion"...|
|00001710| 7d 20 65 6c 73 65 20 7b | 0d 09 09 09 6d 65 73 73 |} else {|....mess|
|00001720| 61 67 65 20 7b 4e 6f 20 | 6d 61 74 63 68 69 6e 67 |age {No |matching|
|00001730| 20 5c 6c 61 62 65 6c 20 | 66 6f 75 6e 64 7d 0d 09 | \label |found}..|
|00001740| 09 7d 0d 09 09 0d 09 23 | 09 5c 69 6e 70 75 74 0d |.}.....#|.\input.|
|00001750| 09 7d 20 65 6c 73 65 69 | 66 20 7b 20 24 63 6d 64 |.} elsei|f { $cmd|
|00001760| 20 3d 3d 20 22 69 6e 70 | 75 74 22 20 7d 20 7b 0d | == "inp|ut" } {.|
|00001770| 09 09 6f 70 65 6e 54 65 | 58 46 69 6c 65 20 24 74 |..openTe|XFile $t|
|00001780| 65 78 74 20 22 2e 74 65 | 78 22 0d 0d 09 23 09 5c |ext ".te|x"...#.\|
|00001790| 69 6e 63 6c 75 64 65 0d | 09 7d 20 65 6c 73 65 69 |include.|.} elsei|
|000017a0| 66 20 7b 20 24 63 6d 64 | 20 3d 3d 20 22 69 6e 63 |f { $cmd| == "inc|
|000017b0| 6c 75 64 65 22 20 7d 20 | 7b 0d 09 09 6f 70 65 6e |lude" } |{...open|
|000017c0| 54 65 58 46 69 6c 65 20 | 22 24 7b 74 65 78 74 7d |TeXFile |"${text}|
|000017d0| 2e 74 65 78 22 0d 0d 09 | 23 20 5c 64 6f 63 75 6d |.tex"...|# \docum|
|000017e0| 65 6e 74 63 6c 61 73 73 | 20 6f 72 20 5c 4c 6f 61 |entclass| or \Loa|
|000017f0| 64 43 6c 61 73 73 0d 09 | 7d 20 65 6c 73 65 69 66 |dClass..|} elseif|
|00001800| 20 7b 20 24 63 6d 64 20 | 3d 3d 20 22 64 6f 63 75 | { $cmd |== "docu|
|00001810| 6d 65 6e 74 63 6c 61 73 | 73 22 20 7c 7c 20 24 63 |mentclas|s" || $c|
|00001820| 6d 64 20 3d 3d 20 22 4c | 6f 61 64 43 6c 61 73 73 |md == "L|oadClass|
|00001830| 22 20 7d 20 7b 0d 09 09 | 6f 70 65 6e 54 65 58 46 |" } {...|openTeXF|
|00001840| 69 6c 65 20 22 24 7b 74 | 65 78 74 7d 2e 63 6c 73 |ile "${t|ext}.cls|
|00001850| 22 0d 09 09 0d 09 23 20 | 5c 75 73 65 70 61 63 6b |".....# |\usepack|
|00001860| 61 67 65 20 6f 72 20 5c | 52 65 71 75 69 72 65 50 |age or \|RequireP|
|00001870| 61 63 6b 61 67 65 0d 09 | 7d 20 65 6c 73 65 69 66 |ackage..|} elseif|
|00001880| 20 7b 20 24 63 6d 64 20 | 3d 3d 20 22 75 73 65 70 | { $cmd |== "usep|
|00001890| 61 63 6b 61 67 65 22 20 | 7c 7c 20 24 63 6d 64 20 |ackage" ||| $cmd |
|000018a0| 3d 3d 20 22 52 65 71 75 | 69 72 65 50 61 63 6b 61 |== "Requ|irePacka|
|000018b0| 67 65 22 20 7d 20 7b 0d | 09 09 6f 70 65 6e 54 65 |ge" } {.|..openTe|
|000018c0| 58 46 69 6c 65 20 22 24 | 7b 74 65 78 74 7d 2e 73 |XFile "$|{text}.s|
|000018d0| 74 79 22 0d 09 09 0d 09 | 23 20 5c 62 69 62 6c 69 |ty".....|# \bibli|
|000018e0| 6f 67 72 61 70 68 79 0d | 09 7d 20 65 6c 73 65 69 |ography.|.} elsei|
|000018f0| 66 20 7b 24 63 6d 64 20 | 3d 3d 20 22 62 69 62 6c |f {$cmd |== "bibl|
|00001900| 69 6f 67 72 61 70 68 79 | 22 7d 20 7b 0d 09 09 6f |iography|"} {...o|
|00001910| 70 65 6e 54 65 58 46 69 | 6c 65 20 22 24 7b 74 65 |penTeXFi|le "${te|
|00001920| 78 74 7d 2e 62 69 62 22 | 0d 09 09 0d 09 23 20 5c |xt}.bib"|.....# \|
|00001930| 62 69 62 6c 69 6f 67 72 | 61 70 68 79 73 74 79 6c |bibliogr|aphystyl|
|00001940| 65 0d 09 7d 20 65 6c 73 | 65 69 66 20 7b 24 63 6d |e..} els|eif {$cm|
|00001950| 64 20 3d 3d 20 22 62 69 | 62 6c 69 6f 67 72 61 70 |d == "bi|bliograp|
|00001960| 68 79 73 74 79 6c 65 22 | 7d 20 7b 0d 09 09 6f 70 |hystyle"|} {...op|
|00001970| 65 6e 54 65 58 46 69 6c | 65 20 22 24 7b 74 65 78 |enTeXFil|e "${tex|
|00001980| 74 7d 2e 62 73 74 22 0d | 09 09 0d 09 23 20 62 6f |t}.bst".|....# bo|
|00001990| 78 2d 6d 61 6b 69 6e 67 | 20 6d 61 63 72 6f 20 28 |x-making| macro (|
|000019a0| 24 62 6f 78 4d 61 63 72 | 6f 4e 61 6d 65 73 29 0d |$boxMacr|oNames).|
|000019b0| 09 7d 20 65 6c 73 65 69 | 66 20 7b 20 5b 6c 73 65 |.} elsei|f { [lse|
|000019c0| 61 72 63 68 20 2d 65 78 | 61 63 74 20 24 54 65 58 |arch -ex|act $TeX|
|000019d0| 6d 6f 64 65 56 61 72 73 | 28 62 6f 78 4d 61 63 72 |modeVars|(boxMacr|
|000019e0| 6f 4e 61 6d 65 73 29 20 | 24 63 6d 64 5d 20 3e 20 |oNames) |$cmd] > |
|000019f0| 2d 31 20 7d 20 7b 0d 09 | 09 6f 70 65 6e 54 65 58 |-1 } {..|.openTeX|
|00001a00| 46 69 6c 65 20 24 74 65 | 78 74 20 0d 09 09 0d 09 |File $te|xt .....|
|00001a10| 23 20 4f 74 68 65 72 0d | 09 7d 20 65 6c 73 65 20 |# Other.|.} else |
|00001a20| 7b 0d 09 09 73 65 6c 65 | 63 74 20 24 66 72 6f 6d |{...sele|ct $from|
|00001a30| 20 24 74 6f 0d 09 09 6d | 65 73 73 61 67 65 20 7b | $to...m|essage {|
|00001a40| 43 6f 6d 6d 61 6e 64 2d | 64 6f 75 62 6c 65 2d 63 |Command-|double-c|
|00001a50| 6c 69 63 6b 20 6f 6e 20 | 74 68 65 20 72 65 71 75 |lick on |the requ|
|00001a60| 69 72 65 64 20 61 72 67 | 75 6d 65 6e 74 20 6f 66 |ired arg|ument of|
|00001a70| 20 61 6e 20 75 6e 64 65 | 72 6c 69 6e 65 64 20 4c | an unde|rlined L|
|00001a80| 61 54 65 58 20 63 6f 6d | 6d 61 6e 64 7d 0d 09 7d |aTeX com|mand}..}|
|00001a90| 0d 7d 0d 0d 23 20 46 69 | 6e 64 20 61 6e 64 20 6f |.}..# Fi|nd and o|
|00001aa0| 70 65 6e 20 61 20 54 65 | 58 20 73 6f 75 72 63 65 |pen a Te|X source|
|00001ab0| 20 66 69 6c 65 2e 20 0d | 23 0d 70 72 6f 63 20 6f | file. .|#.proc o|
|00001ac0| 70 65 6e 54 65 58 46 69 | 6c 65 20 7b 66 69 6c 65 |penTeXFi|le {file|
|00001ad0| 20 7b 65 78 74 20 22 22 | 7d 7d 20 7b 0d 09 67 6c | {ext ""|}} {..gl|
|00001ae0| 6f 62 61 6c 20 54 65 58 | 53 65 61 72 63 68 50 61 |obal TeX|SearchPa|
|00001af0| 74 68 0d 09 23 20 49 67 | 6e 6f 72 65 20 24 65 78 |th..# Ig|nore $ex|
|00001b00| 74 20 69 66 20 24 66 69 | 6c 65 20 61 6c 72 65 61 |t if $fi|le alrea|
|00001b10| 64 79 20 68 61 73 20 61 | 6e 20 65 78 74 65 6e 73 |dy has a|n extens|
|00001b20| 69 6f 6e 3a 0d 09 69 66 | 20 7b 5b 73 74 72 69 6e |ion:..if| {[strin|
|00001b30| 67 20 6c 65 6e 67 74 68 | 20 5b 66 69 6c 65 20 65 |g length| [file e|
|00001b40| 78 74 65 6e 73 69 6f 6e | 20 24 66 69 6c 65 5d 5d |xtension| $file]]|
|00001b50| 20 3d 3d 20 30 7d 20 7b | 0d 09 09 73 65 74 20 66 | == 0} {|...set f|
|00001b60| 69 6c 65 20 24 66 69 6c | 65 24 65 78 74 0d 09 7d |ile $fil|e$ext..}|
|00001b70| 0d 09 23 20 44 65 74 65 | 72 6d 69 6e 65 20 61 62 |..# Dete|rmine ab|
|00001b80| 73 6f 6c 75 74 65 20 66 | 69 6c 65 20 73 70 65 63 |solute f|ile spec|
|00001b90| 69 66 69 63 61 74 69 6f | 6e 3a 0d 09 73 65 74 20 |ificatio|n:..set |
|00001ba0| 66 69 6c 65 6e 61 6d 65 | 20 5b 61 62 73 6f 6c 75 |filename| [absolu|
|00001bb0| 74 65 50 61 74 68 20 24 | 66 69 6c 65 5d 0d 09 69 |tePath $|file]..i|
|00001bc0| 66 20 7b 21 5b 63 61 74 | 63 68 20 7b 6f 70 65 6e |f {![cat|ch {open|
|00001bd0| 46 69 6c 65 51 75 69 65 | 74 6c 79 20 24 66 69 6c |FileQuie|tly $fil|
|00001be0| 65 6e 61 6d 65 7d 5d 7d | 20 7b 20 0d 09 09 6d 65 |ename}]}| { ...me|
|00001bf0| 73 73 61 67 65 20 24 66 | 69 6c 65 6e 61 6d 65 0d |ssage $f|ilename.|
|00001c00| 09 09 72 65 74 75 72 6e | 20 0d 09 7d 0d 09 23 20 |..return| ..}..# |
|00001c10| 42 75 69 6c 64 20 74 68 | 65 20 54 65 58 20 73 65 |Build th|e TeX se|
|00001c20| 61 72 63 68 20 70 61 74 | 68 20 6f 6e 2d 74 68 65 |arch pat|h on-the|
|00001c30| 2d 66 6c 79 20 28 69 66 | 20 6e 65 63 65 73 73 61 |-fly (if| necessa|
|00001c40| 72 79 29 3a 0d 09 69 66 | 20 7b 20 5b 6c 6c 65 6e |ry):..if| { [llen|
|00001c50| 67 74 68 20 24 54 65 58 | 53 65 61 72 63 68 50 61 |gth $TeX|SearchPa|
|00001c60| 74 68 5d 20 3d 3d 20 30 | 20 7d 20 7b 0d 09 09 6d |th] == 0| } {...m|
|00001c70| 65 73 73 61 67 65 20 22 | 62 75 69 6c 64 69 6e 67 |essage "|building|
|00001c80| 20 54 65 58 20 73 65 61 | 72 63 68 20 70 61 74 68 | TeX sea|rch path|
|00001c90| c9 22 0d 09 09 73 65 74 | 20 54 65 58 53 65 61 72 |."...set| TeXSear|
|00001ca0| 63 68 50 61 74 68 20 5b | 62 75 69 6c 64 54 65 58 |chPath [|buildTeX|
|00001cb0| 53 65 61 72 63 68 50 61 | 74 68 5d 0d 09 09 6d 65 |SearchPa|th]...me|
|00001cc0| 73 73 61 67 65 20 22 22 | 0d 09 7d 0d 09 23 20 4c |ssage ""|..}..# L|
|00001cd0| 6f 6f 6b 20 66 6f 72 20 | 74 68 65 20 66 69 6c 65 |ook for |the file|
|00001ce0| 20 61 6c 6f 6e 67 20 74 | 68 65 20 54 65 58 20 73 | along t|he TeX s|
|00001cf0| 65 61 72 63 68 20 70 61 | 74 68 3a 0d 09 66 6f 72 |earch pa|th:..for|
|00001d00| 65 61 63 68 20 66 6f 6c | 64 65 72 20 24 54 65 58 |each fol|der $TeX|
|00001d10| 53 65 61 72 63 68 50 61 | 74 68 20 7b 0d 23 20 09 |SearchPa|th {.# .|
|00001d20| 09 73 65 74 20 66 69 6c | 65 6e 61 6d 65 20 22 24 |.set fil|ename "$|
|00001d30| 66 6f 6c 64 65 72 24 66 | 69 6c 65 24 65 78 74 22 |folder$f|ile$ext"|
|00001d40| 0d 09 09 73 65 74 20 66 | 69 6c 65 6e 61 6d 65 20 |...set f|ilename |
|00001d50| 22 24 66 6f 6c 64 65 72 | 24 66 69 6c 65 22 0d 09 |"$folder|$file"..|
|00001d60| 09 69 66 20 7b 21 5b 63 | 61 74 63 68 20 7b 6f 70 |.if {![c|atch {op|
|00001d70| 65 6e 46 69 6c 65 51 75 | 69 65 74 6c 79 20 24 66 |enFileQu|ietly $f|
|00001d80| 69 6c 65 6e 61 6d 65 7d | 5d 7d 20 7b 0d 09 09 09 |ilename}|]} {....|
|00001d90| 6d 65 73 73 61 67 65 20 | 24 66 69 6c 65 6e 61 6d |message |$filenam|
|00001da0| 65 0d 09 09 09 72 65 74 | 75 72 6e 20 09 0d 09 09 |e....ret|urn ....|
|00001db0| 7d 0d 09 7d 0d 09 62 65 | 65 70 0d 09 6d 65 73 73 |}..}..be|ep..mess|
|00001dc0| 61 67 65 20 22 63 61 6e | 27 74 20 66 69 6e 64 20 |age "can|'t find |
|00001dd0| 54 65 58 20 69 6e 70 75 | 74 20 66 69 6c 65 20 5c |TeX inpu|t file \|
|00001de0| 22 24 66 69 6c 65 5c 22 | 22 0d 7d 0d 0d 23 20 52 |"$file\"|".}..# R|
|00001df0| 65 74 75 72 6e 20 61 20 | 6c 69 73 74 20 6f 66 20 |eturn a |list of |
|00001e00| 66 6f 6c 64 65 72 73 20 | 69 6e 20 77 68 69 63 68 |folders |in which|
|00001e10| 20 74 6f 20 73 65 61 72 | 63 68 20 66 6f 72 20 54 | to sear|ch for T|
|00001e20| 65 58 20 69 6e 70 75 74 | 20 66 69 6c 65 73 2c 20 |eX input| files, |
|00001e30| 0d 23 20 69 6e 63 6c 75 | 64 69 6e 67 20 74 68 65 |.# inclu|ding the|
|00001e40| 20 54 65 58 49 6e 70 75 | 74 73 20 66 6f 6c 64 65 | TeXInpu|ts folde|
|00001e50| 72 20 28 69 66 20 69 74 | 20 65 78 69 73 74 73 29 |r (if it| exists)|
|00001e60| 20 61 6e 64 20 61 6e 79 | 20 66 6f 6c 64 65 72 73 | and any| folders|
|00001e70| 20 6f 66 20 0d 23 20 74 | 68 65 20 66 6f 72 6d 20 | of .# t|he form |
|00001e80| 22 2a 69 6e 70 75 74 2a | 22 20 69 6e 20 74 68 65 |"*input*|" in the|
|00001e90| 20 54 65 58 20 61 70 70 | 6c 69 63 61 74 69 6f 6e | TeX app|lication|
|00001ea0| 20 64 69 72 65 63 74 6f | 72 79 2e 20 20 54 68 65 | directo|ry. The|
|00001eb0| 20 63 75 72 72 65 6e 74 | 0d 23 20 66 6f 6c 64 65 | current|.# folde|
|00001ec0| 72 20 69 73 20 6e 6f 74 | 20 69 6e 63 6c 75 64 65 |r is not| include|
|00001ed0| 64 20 69 6e 20 74 68 65 | 20 6c 69 73 74 2e 20 20 |d in the| list. |
|00001ee0| 44 65 66 61 75 6c 74 20 | 73 65 61 72 63 68 20 64 |Default |search d|
|00001ef0| 65 70 74 68 20 69 73 20 | 74 77 6f 0d 23 20 6c 65 |epth is |two.# le|
|00001f00| 76 65 6c 73 20 64 65 65 | 70 2e 0d 23 0d 23 20 28 |vels dee|p..#.# (|
|00001f10| 4e 6f 74 65 3a 20 54 68 | 65 20 54 65 58 49 6e 70 |Note: Th|e TeXInp|
|00001f20| 75 74 73 20 66 6f 6c 64 | 65 72 20 69 73 20 61 73 |uts fold|er is as|
|00001f30| 73 69 67 6e 65 64 20 66 | 72 6f 6d 20 74 68 65 20 |signed f|rom the |
|00001f40| 41 70 70 50 61 74 68 73 | 20 73 75 62 6d 65 6e 75 |AppPaths| submenu|
|00001f50| 2e 29 0d 23 0d 70 72 6f | 63 20 62 75 69 6c 64 54 |.).#.pro|c buildT|
|00001f60| 65 58 53 65 61 72 63 68 | 50 61 74 68 20 7b 7b 64 |eXSearch|Path {{d|
|00001f70| 65 70 74 68 20 32 7d 7d | 20 7b 0d 09 67 6c 6f 62 |epth 2}}| {..glob|
|00001f80| 61 6c 20 54 65 58 49 6e | 70 75 74 73 20 74 65 78 |al TeXIn|puts tex|
|00001f90| 53 69 67 0d 09 0d 09 73 | 65 74 20 66 6f 6c 64 65 |Sig....s|et folde|
|00001fa0| 72 73 20 7b 7d 0d 09 23 | 20 54 68 65 20 6c 6f 63 |rs {}..#| The loc|
|00001fb0| 61 6c 20 27 54 65 58 49 | 6e 70 75 74 73 27 20 66 |al 'TeXI|nputs' f|
|00001fc0| 6f 6c 64 65 72 3a 0d 09 | 69 66 20 7b 5b 69 6e 66 |older:..|if {[inf|
|00001fd0| 6f 20 65 78 69 73 74 73 | 20 54 65 58 49 6e 70 75 |o exists| TeXInpu|
|00001fe0| 74 73 5d 20 26 26 20 5b | 73 74 72 69 6e 67 20 6c |ts] && [|string l|
|00001ff0| 65 6e 67 74 68 20 24 54 | 65 58 49 6e 70 75 74 73 |ength $T|eXInputs|
|00002000| 5d 20 3e 20 30 7d 20 7b | 20 0d 09 09 73 65 74 20 |] > 0} {| ...set |
|00002010| 66 6f 6c 64 65 72 73 20 | 5b 63 6f 6e 63 61 74 20 |folders |[concat |
|00002020| 24 66 6f 6c 64 65 72 73 | 20 5b 6c 69 73 74 20 24 |$folders| [list $|
|00002030| 54 65 58 49 6e 70 75 74 | 73 5d 5d 0d 09 09 23 20 |TeXInput|s]]...# |
|00002040| 53 65 61 72 63 68 20 73 | 75 62 66 6f 6c 64 65 72 |Search s|ubfolder|
|00002050| 73 20 24 64 65 70 74 68 | 20 6c 65 76 65 6c 73 20 |s $depth| levels |
|00002060| 64 65 65 70 3a 0d 09 09 | 73 65 74 20 66 6f 6c 64 |deep:...|set fold|
|00002070| 65 72 73 20 5b 63 6f 6e | 63 61 74 20 24 66 6f 6c |ers [con|cat $fol|
|00002080| 64 65 72 73 20 5b 6c 69 | 73 74 53 75 62 66 6f 6c |ders [li|stSubfol|
|00002090| 64 65 72 73 20 24 54 65 | 58 49 6e 70 75 74 73 20 |ders $Te|XInputs |
|000020a0| 24 64 65 70 74 68 5d 5d | 0d 09 7d 0d 0d 09 23 20 |$depth]]|..}...# |
|000020b0| 41 6e 79 20 22 2a 69 6e | 70 75 74 73 2a 22 20 66 |Any "*in|puts*" f|
|000020c0| 6f 6c 64 65 72 73 20 69 | 6e 20 74 68 65 20 54 65 |olders i|n the Te|
|000020d0| 58 20 61 70 70 6c 69 63 | 61 74 69 6f 6e 20 66 6f |X applic|ation fo|
|000020e0| 6c 64 65 72 3a 0d 09 69 | 66 20 7b 5b 69 6e 66 6f |lder:..i|f {[info|
|000020f0| 20 65 78 69 73 74 73 20 | 74 65 78 53 69 67 5d 20 | exists |texSig] |
|00002100| 26 26 20 5b 73 74 72 69 | 6e 67 20 6c 65 6e 67 74 |&& [stri|ng lengt|
|00002110| 68 20 24 74 65 78 53 69 | 67 5d 20 3e 20 30 7d 20 |h $texSi|g] > 0} |
|00002120| 7b 20 0d 09 09 73 65 74 | 20 74 65 78 50 61 74 68 |{ ...set| texPath|
|00002130| 20 5b 6e 61 6d 65 46 72 | 6f 6d 41 70 70 6c 20 24 | [nameFr|omAppl $|
|00002140| 74 65 78 53 69 67 5d 0d | 09 09 73 65 74 20 54 65 |texSig].|..set Te|
|00002150| 58 44 69 72 20 5b 66 69 | 6c 65 20 64 69 72 6e 61 |XDir [fi|le dirna|
|00002160| 6d 65 20 24 74 65 78 50 | 61 74 68 5d 0d 09 09 23 |me $texP|ath]...#|
|00002170| 20 57 68 79 20 61 64 64 | 20 74 68 65 20 66 6f 6c | Why add| the fol|
|00002180| 64 65 72 20 63 6f 6e 74 | 61 69 6e 69 6e 67 20 74 |der cont|aining t|
|00002190| 68 65 20 54 65 58 20 61 | 70 70 20 74 6f 20 74 68 |he TeX a|pp to th|
|000021a0| 65 20 6c 69 73 74 3f 0d | 09 09 23 20 73 65 74 20 |e list?.|..# set |
|000021b0| 66 6f 6c 64 65 72 73 20 | 5b 63 6f 6e 63 61 74 20 |folders |[concat |
|000021c0| 24 66 6f 6c 64 65 72 73 | 20 5b 6c 69 73 74 20 24 |$folders| [list $|
|000021d0| 54 65 58 44 69 72 5d 5d | 0d 09 09 23 20 42 75 67 |TeXDir]]|...# Bug|
|000021e0| 3a 20 20 27 67 6c 6f 62 | 27 20 69 73 20 63 61 73 |: 'glob|' is cas|
|000021f0| 65 20 73 65 6e 73 69 74 | 69 76 65 21 0d 09 09 66 |e sensit|ive!...f|
|00002200| 6f 72 65 61 63 68 20 66 | 6f 6c 64 65 72 20 5b 67 |oreach f|older [g|
|00002210| 6c 6f 62 20 22 24 54 65 | 58 44 69 72 3a 2a 5c 5b |lob "$Te|XDir:*\[|
|00002220| 49 69 5c 5d 6e 70 75 74 | 73 2a 22 5d 20 7b 0d 09 |Ii\]nput|s*"] {..|
|00002230| 09 09 73 65 74 20 66 6f | 6c 64 65 72 73 20 5b 63 |..set fo|lders [c|
|00002240| 6f 6e 63 61 74 20 24 66 | 6f 6c 64 65 72 73 20 5b |oncat $f|olders [|
|00002250| 6c 69 73 74 20 24 66 6f | 6c 64 65 72 5d 5d 0d 09 |list $fo|lder]]..|
|00002260| 09 09 23 20 53 65 61 72 | 63 68 20 73 75 62 66 6f |..# Sear|ch subfo|
|00002270| 6c 64 65 72 73 20 24 64 | 65 70 74 68 20 6c 65 76 |lders $d|epth lev|
|00002280| 65 6c 73 20 64 65 65 70 | 3a 0d 09 09 09 73 65 74 |els deep|:....set|
|00002290| 20 66 6f 6c 64 65 72 73 | 20 5b 63 6f 6e 63 61 74 | folders| [concat|
|000022a0| 20 24 66 6f 6c 64 65 72 | 73 20 5b 6c 69 73 74 53 | $folder|s [listS|
|000022b0| 75 62 66 6f 6c 64 65 72 | 73 20 24 66 6f 6c 64 65 |ubfolder|s $folde|
|000022c0| 72 20 24 64 65 70 74 68 | 5d 5d 0d 09 09 7d 0d 09 |r $depth|]]...}..|
|000022d0| 7d 0d 0d 09 23 20 4d 61 | 6b 65 20 73 75 72 65 20 |}...# Ma|ke sure |
|000022e0| 65 61 63 68 20 66 6f 6c | 64 65 72 20 65 6e 64 73 |each fol|der ends|
|000022f0| 20 77 69 74 68 20 61 20 | 63 6f 6c 6f 6e 3a 0d 09 | with a |colon:..|
|00002300| 73 65 74 20 72 65 73 75 | 6c 74 20 7b 7d 0d 09 66 |set resu|lt {}..f|
|00002310| 6f 72 65 61 63 68 20 66 | 6f 6c 64 65 72 20 24 66 |oreach f|older $f|
|00002320| 6f 6c 64 65 72 73 20 7b | 0d 09 09 73 65 74 20 66 |olders {|...set f|
|00002330| 6f 6c 64 65 72 20 22 5b | 73 74 72 69 6e 67 20 74 |older "[|string t|
|00002340| 72 69 6d 72 69 67 68 74 | 20 24 66 6f 6c 64 65 72 |rimright| $folder|
|00002350| 20 7b 3a 7d 5d 3a 22 0d | 09 09 73 65 74 20 72 65 | {:}]:".|..set re|
|00002360| 73 75 6c 74 20 5b 63 6f | 6e 63 61 74 20 24 72 65 |sult [co|ncat $re|
|00002370| 73 75 6c 74 20 5b 6c 69 | 73 74 20 24 66 6f 6c 64 |sult [li|st $fold|
|00002380| 65 72 5d 5d 0d 09 7d 0d | 09 72 65 74 75 72 6e 20 |er]]..}.|.return |
|00002390| 24 72 65 73 75 6c 74 0d | 7d 0d 0d 0d 23 20 45 78 |$result.|}...# Ex|
|000023a0| 74 65 6e 64 20 74 68 65 | 20 61 72 67 75 6d 65 6e |tend the| argumen|
|000023b0| 74 20 61 72 6f 75 6e 64 | 20 74 68 65 20 70 6f 73 |t around| the pos|
|000023c0| 69 74 69 6f 6e 20 24 66 | 72 6f 6d 2e 0d 23 20 28 |ition $f|rom..# (|
|000023d0| 41 72 67 73 20 61 72 65 | 20 64 65 6c 69 6d 69 74 |Args are| delimit|
|000023e0| 65 64 20 62 79 20 63 6f | 6d 6d 61 73 20 6f 72 20 |ed by co|mmas or |
|000023f0| 63 75 72 6c 79 2d 62 72 | 61 63 65 73 2e 29 0d 70 |curly-br|aces.).p|
|00002400| 72 6f 63 20 54 65 58 45 | 78 74 65 6e 64 41 72 67 |roc TeXE|xtendArg|
|00002410| 20 7b 66 72 6f 6d 20 7b | 74 6f 20 30 7d 7d 20 7b | {from {|to 0}} {|
|00002420| 0d 09 69 66 20 7b 24 74 | 6f 20 3d 3d 20 30 7d 20 |..if {$t|o == 0} |
|00002430| 7b 20 73 65 74 20 74 6f | 20 24 66 72 6f 6d 20 7d |{ set to| $from }|
|00002440| 0d 09 73 65 74 20 72 65 | 73 75 6c 74 20 5b 6c 69 |..set re|sult [li|
|00002450| 73 74 20 24 66 72 6f 6d | 20 24 74 6f 5d 0d 09 69 |st $from| $to]..i|
|00002460| 66 20 7b 21 5b 63 61 74 | 63 68 20 7b 73 65 61 72 |f {![cat|ch {sear|
|00002470| 63 68 20 2d 66 20 30 20 | 2d 72 20 31 20 2d 73 20 |ch -f 0 |-r 1 -s |
|00002480| 2d 6d 20 30 20 22 5c 5b | 2c 5c 7b 5c 5d 22 20 24 |-m 0 "\[|,\{\]" $|
|00002490| 66 72 6f 6d 7d 20 6d 74 | 63 68 30 5d 7d 20 7b 0d |from} mt|ch0]} {.|
|000024a0| 09 09 69 66 20 7b 21 5b | 63 61 74 63 68 20 7b 73 |..if {![|catch {s|
|000024b0| 65 61 72 63 68 20 2d 66 | 20 31 20 2d 72 20 31 20 |earch -f| 1 -r 1 |
|000024c0| 2d 73 20 2d 6d 20 30 20 | 22 5c 5b 2c 5c 7d 5c 5d |-s -m 0 |"\[,\}\]|
|000024d0| 22 20 24 74 6f 7d 20 6d | 74 63 68 31 5d 7d 20 7b |" $to} m|tch1]} {|
|000024e0| 0d 09 09 09 73 65 74 20 | 66 72 6f 6d 20 5b 6c 69 |....set |from [li|
|000024f0| 6e 64 65 78 20 24 6d 74 | 63 68 30 20 31 5d 0d 09 |ndex $mt|ch0 1]..|
|00002500| 09 09 73 65 74 20 74 6f | 20 5b 6c 69 6e 64 65 78 |..set to| [lindex|
|00002510| 20 24 6d 74 63 68 31 20 | 30 5d 0d 09 09 09 23 23 | $mtch1 |0]....##|
|00002520| 20 45 6d 62 65 64 64 65 | 64 20 62 72 61 63 65 73 | Embedde|d braces|
|00002530| 20 69 6e 20 74 68 65 20 | 61 72 67 20 70 72 6f 62 | in the |arg prob|
|00002540| 61 62 6c 79 20 6d 65 61 | 6e 20 74 68 61 74 20 74 |ably mea|n that t|
|00002550| 68 65 20 75 73 65 72 0d | 09 09 09 23 23 20 63 6c |he user.|...## cl|
|00002560| 69 63 6b 65 64 20 6f 75 | 74 73 69 64 65 20 61 20 |icked ou|tside a |
|00002570| 76 61 6c 69 64 20 63 6f | 6d 6d 61 6e 64 20 61 72 |valid co|mmand ar|
|00002580| 67 75 6d 65 6e 74 0d 09 | 09 09 69 66 20 7b 5b 72 |gument..|..if {[r|
|00002590| 65 67 65 78 70 20 22 5c | 5b 5c 7b 5c 7d 5c 5d 22 |egexp "\|[\{\}\]"|
|000025a0| 20 5b 67 65 74 54 65 78 | 74 20 24 66 72 6f 6d 20 | [getTex|t $from |
|000025b0| 24 74 6f 5d 5d 20 3d 3d | 20 30 7d 20 7b 0d 09 09 |$to]] ==| 0} {...|
|000025c0| 09 09 73 65 74 20 72 65 | 73 75 6c 74 20 5b 6c 69 |..set re|sult [li|
|000025d0| 73 74 20 24 66 72 6f 6d | 20 24 74 6f 5d 0d 09 09 |st $from| $to]...|
|000025e0| 09 7d 0d 09 09 7d 0d 09 | 7d 0d 09 72 65 74 75 72 |.}...}..|}..retur|
|000025f0| 6e 20 24 72 65 73 75 6c | 74 0d 7d 0d 0d 23 20 46 |n $resul|t.}..# F|
|00002600| 69 6e 64 20 61 20 4c 61 | 54 65 58 20 63 6f 6d 6d |ind a La|TeX comm|
|00002610| 61 6e 64 20 77 69 74 68 | 20 61 72 67 75 6d 65 6e |and with| argumen|
|00002620| 74 73 20 69 6e 20 65 69 | 74 68 65 72 20 64 69 72 |ts in ei|ther dir|
|00002630| 65 63 74 69 6f 6e 2e 0d | 23 20 28 73 65 65 20 66 |ection..|# (see f|
|00002640| 69 6e 64 43 6f 6d 6d 61 | 6e 64 57 69 74 68 41 72 |indComma|ndWithAr|
|00002650| 67 73 20 69 6e 20 6c 61 | 74 65 78 4d 61 63 72 6f |gs in la|texMacro|
|00002660| 73 2e 74 63 6c 29 0d 23 | 20 54 68 69 73 20 76 65 |s.tcl).#| This ve|
|00002670| 72 73 69 6f 6e 20 72 65 | 74 75 72 6e 73 20 74 68 |rsion re|turns th|
|00002680| 65 20 70 6f 73 69 74 69 | 6f 6e 73 20 61 74 20 77 |e positi|ons at w|
|00002690| 68 69 63 68 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |hich the| command|
|000026a0| 20 6f 70 74 69 6f 6e 73 | 20 0d 23 20 61 6e 64 20 | options| .# and |
|000026b0| 61 72 67 75 6d 65 6e 74 | 73 20 73 74 61 72 74 2c |argument|s start,|
|000026c0| 20 61 73 20 77 65 6c 6c | 2e 0d 70 72 6f 63 20 66 | as well|..proc f|
|000026d0| 69 6e 64 43 6f 6d 6d 61 | 6e 64 57 69 74 68 50 61 |indComma|ndWithPa|
|000026e0| 72 74 73 20 7b 70 6f 73 | 20 64 69 72 65 63 74 69 |rts {pos| directi|
|000026f0| 6f 6e 7d 20 7b 0d 09 73 | 65 74 20 73 65 61 72 63 |on} {..s|et searc|
|00002700| 68 53 74 72 69 6e 67 20 | 7b 5c 5c 28 5b 5e 61 2d |hString |{\\([^a-|
|00002710| 7a 41 2d 5a 5c 74 5c 72 | 5d 7c 5b 61 2d 7a 41 2d |zA-Z\t\r|]|[a-zA-|
|00002720| 5a 5d 2b 5c 2a 3f 29 28 | 5c 5b 2e 2a 5c 5d 29 2a |Z]+\*?)(|\[.*\])*|
|00002730| 28 7b 5b 5e 7b 7d 5d 2a | 7d 29 3f 7d 0d 09 69 66 |({[^{}]*|})?}..if|
|00002740| 20 7b 21 5b 63 61 74 63 | 68 20 7b 73 65 61 72 63 | {![catc|h {searc|
|00002750| 68 20 2d 73 20 2d 66 20 | 24 64 69 72 65 63 74 69 |h -s -f |$directi|
|00002760| 6f 6e 20 2d 72 20 31 20 | 24 73 65 61 72 63 68 53 |on -r 1 |$searchS|
|00002770| 74 72 69 6e 67 20 24 70 | 6f 73 7d 20 6d 74 63 68 |tring $p|os} mtch|
|00002780| 5d 7d 20 7b 0d 09 09 73 | 65 74 20 62 65 67 20 5b |]} {...s|et beg [|
|00002790| 6c 69 6e 64 65 78 20 24 | 6d 74 63 68 20 30 5d 0d |lindex $|mtch 0].|
|000027a0| 09 09 73 65 74 20 65 6e | 64 20 5b 6c 69 6e 64 65 |..set en|d [linde|
|000027b0| 78 20 24 6d 74 63 68 20 | 31 5d 0d 09 09 72 65 67 |x $mtch |1]...reg|
|000027c0| 65 78 70 20 2d 69 6e 64 | 69 63 65 73 20 24 73 65 |exp -ind|ices $se|
|000027d0| 61 72 63 68 53 74 72 69 | 6e 67 20 5b 67 65 74 54 |archStri|ng [getT|
|000027e0| 65 78 74 20 24 62 65 67 | 20 24 65 6e 64 5d 20 61 |ext $beg| $end] a|
|000027f0| 6c 6c 20 63 6d 64 20 6f | 70 74 20 61 72 67 0d 09 |ll cmd o|pt arg..|
|00002800| 09 73 65 74 20 6f 70 74 | 20 5b 65 78 70 72 20 24 |.set opt| [expr $|
|00002810| 62 65 67 20 2b 20 5b 6c | 69 6e 64 65 78 20 24 6f |beg + [l|index $o|
|00002820| 70 74 20 30 5d 5d 0d 09 | 09 73 65 74 20 61 72 67 |pt 0]]..|.set arg|
|00002830| 20 5b 65 78 70 72 20 24 | 62 65 67 20 2b 20 5b 6c | [expr $|beg + [l|
|00002840| 69 6e 64 65 78 20 24 61 | 72 67 20 30 5d 5d 0d 09 |index $a|rg 0]]..|
|00002850| 09 72 65 74 75 72 6e 20 | 5b 6c 69 73 74 20 24 62 |.return |[list $b|
|00002860| 65 67 20 24 6f 70 74 20 | 24 61 72 67 20 24 65 6e |eg $opt |$arg $en|
|00002870| 64 5d 0d 09 7d 20 65 6c | 73 65 20 7b 0d 09 09 72 |d]..} el|se {...r|
|00002880| 65 74 75 72 6e 20 22 22 | 0d 09 7d 0d 7d 0d 0d 23 |eturn ""|..}.}..#|
|00002890| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000028a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000028b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000028c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000028d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 23 20 52 65 66 |--------|--.# Ref|
|000028e0| 65 72 65 6e 63 65 20 63 | 6f 6d 70 6c 65 74 69 6f |erence c|ompletio|
|000028f0| 6e 0d 23 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |n.#-----|--------|
|00002900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 0d 23 |--------|-----..#|
|00002940| 20 43 6f 6d 70 6c 65 74 | 65 20 61 20 5c 72 65 66 | Complet|e a \ref|
|00002950| 2d 6c 69 6b 65 20 63 6f | 6d 6d 61 6e 64 20 6f 72 |-like co|mmand or|
|00002960| 20 69 6e 73 65 72 74 20 | 61 20 6e 65 77 20 5c 72 | insert |a new \r|
|00002970| 65 66 2d 6c 69 6b 65 20 | 63 6f 6d 6d 61 6e 64 0d |ef-like |command.|
|00002980| 23 20 28 62 61 73 65 64 | 20 6f 6e 20 74 68 65 20 |# (based| on the |
|00002990| 76 61 6c 75 65 20 6f 66 | 20 27 64 65 66 61 75 6c |value of| 'defaul|
|000029a0| 74 52 65 66 43 6f 6d 6d | 61 6e 64 27 29 20 75 73 |tRefComm|and') us|
|000029b0| 69 6e 67 20 74 68 65 20 | 61 72 67 75 6d 65 6e 74 |ing the |argument|
|000029c0| 20 6f 66 0d 23 20 73 6f | 6d 65 20 6e 65 61 72 62 | of.# so|me nearb|
|000029d0| 79 20 5c 6c 61 62 65 6c | 20 63 6f 6d 6d 61 6e 64 |y \label| command|
|000029e0| 2e 20 20 52 65 70 65 61 | 74 65 64 20 63 61 6c 6c |. Repea|ted call|
|000029f0| 73 20 74 6f 20 27 54 65 | 58 52 65 66 43 6f 6d 70 |s to 'Te|XRefComp|
|00002a00| 6c 65 74 69 6f 6e 27 0d | 23 20 6c 6f 6f 70 20 74 |letion'.|# loop t|
|00002a10| 68 72 6f 75 67 68 20 61 | 6c 6c 20 6c 6f 63 61 6c |hrough a|ll local|
|00002a20| 20 5c 6c 61 62 65 6c 20 | 63 6f 6d 6d 61 6e 64 73 | \label |commands|
|00002a30| 2e 0d 23 0d 23 20 28 77 | 72 69 74 74 65 6e 20 62 |..#.# (w|ritten b|
|00002a40| 79 20 56 69 6e 63 65 20 | 44 61 72 6c 65 79 20 3c |y Vince |Darley <|
|00002a50| 6d 61 69 6c 74 6f 3a 76 | 69 6e 63 65 40 64 61 73 |mailto:v|ince@das|
|00002a60| 2e 68 61 72 76 61 72 64 | 2e 65 64 75 3e 29 0d 0d |.harvard|.edu>)..|
|00002a70| 70 72 6f 63 20 54 65 58 | 52 65 66 43 6f 6d 70 6c |proc TeX|RefCompl|
|00002a80| 65 74 69 6f 6e 20 7b 64 | 65 66 61 75 6c 74 52 65 |etion {d|efaultRe|
|00002a90| 66 43 6f 6d 6d 61 6e 64 | 7d 20 7b 0d 09 0d 09 23 |fCommand|} {....#|
|00002aa0| 20 73 65 65 20 69 66 20 | 74 68 65 72 65 27 73 20 | see if |there's |
|00002ab0| 61 20 73 65 6c 65 63 74 | 69 6f 6e 20 61 6e 64 20 |a select|ion and |
|00002ac0| 64 65 6c 65 74 65 20 69 | 74 2c 20 69 66 20 6e 65 |delete i|t, if ne|
|00002ad0| 63 65 73 73 61 72 79 3a | 0d 09 69 66 20 7b 21 5b |cessary:|..if {![|
|00002ae0| 69 6e 73 65 72 74 4f 62 | 6a 65 63 74 20 22 22 5d |insertOb|ject ""]|
|00002af0| 7d 20 74 68 65 6e 20 7b | 0d 09 09 6d 65 73 73 61 |} then {|...messa|
|00002b00| 67 65 20 22 6f 70 65 72 | 61 74 69 6f 6e 20 63 61 |ge "oper|ation ca|
|00002b10| 6e 63 65 6c 6c 65 64 22 | 0d 09 09 72 65 74 75 72 |ncelled"|...retur|
|00002b20| 6e 0d 09 7d 0d 0d 09 67 | 6c 6f 62 61 6c 20 5f 5f |n..}...g|lobal __|
|00002b30| 77 63 5f 5f 69 6e 73 50 | 6f 73 20 63 6f 6d 70 6c |wc__insP|os compl|
|00002b40| 65 74 69 6f 6e 5f 67 6f | 74 20 63 6f 6d 70 6c 65 |etion_go|t comple|
|00002b50| 74 69 6f 6e 5f 6c 6f 6f | 6b 69 6e 67 0d 09 0d 09 |tion_loo|king....|
|00002b60| 23 20 63 75 72 73 6f 72 | 20 63 68 61 6e 67 65 64 |# cursor| changed|
|00002b70| 20 70 6c 61 63 65 3f 0d | 09 73 65 74 20 70 6f 73 | place?.|.set pos|
|00002b80| 20 5b 67 65 74 50 6f 73 | 5d 0d 09 69 66 20 24 70 | [getPos|]..if $p|
|00002b90| 6f 73 3d 3d 24 5f 5f 77 | 63 5f 5f 69 6e 73 50 6f |os==$__w|c__insPo|
|00002ba0| 73 20 7b 0d 09 09 77 6f | 72 64 43 6f 6d 70 6c 65 |s {...wo|rdComple|
|00002bb0| 74 69 6f 6e 20 24 63 6f | 6d 70 6c 65 74 69 6f 6e |tion $co|mpletion|
|00002bc0| 5f 67 6f 74 20 24 63 6f | 6d 70 6c 65 74 69 6f 6e |_got $co|mpletion|
|00002bd0| 5f 6c 6f 6f 6b 69 6e 67 | 0d 09 09 6d 65 73 73 61 |_looking|...messa|
|00002be0| 67 65 20 22 70 72 65 73 | 73 20 3c 43 74 6c 20 4f |ge "pres|s <Ctl O|
|00002bf0| 70 74 20 58 3e 20 6f 72 | 20 3c 43 74 6c 20 4f 70 |pt X> or| <Ctl Op|
|00002c00| 74 20 50 3e 20 66 6f 72 | 20 61 6e 6f 74 68 65 72 |t P> for| another|
|00002c10| 20 6c 61 62 65 6c 22 0d | 09 09 72 65 74 75 72 6e | label".|..return|
|00002c20| 0d 09 7d 0d 0d 09 67 6c | 6f 62 61 6c 20 54 65 58 |..}...gl|obal TeX|
|00002c30| 6d 6f 64 65 56 61 72 73 | 0d 0d 09 73 65 74 20 54 |modeVars|...set T|
|00002c40| 65 58 52 65 66 20 22 5c | 5c 24 64 65 66 61 75 6c |eXRef "\|\$defaul|
|00002c50| 74 52 65 66 43 6f 6d 6d | 61 6e 64 5c 7b 22 0d 09 |tRefComm|and\{"..|
|00002c60| 69 66 20 7b 5b 69 73 57 | 68 69 74 65 73 70 61 63 |if {[isW|hitespac|
|00002c70| 65 20 5b 67 65 74 54 65 | 78 74 20 30 20 24 70 6f |e [getTe|xt 0 $po|
|00002c80| 73 5d 5d 7d 20 74 68 65 | 6e 20 7b 0d 09 09 69 6e |s]]} the|n {...in|
|00002c90| 73 65 72 74 54 65 78 74 | 20 22 24 54 65 58 52 65 |sertText| "$TeXRe|
|00002ca0| 66 a5 5c 7d 22 0d 09 09 | 67 6f 74 6f 20 24 70 6f |f.\}"...|goto $po|
|00002cb0| 73 0d 09 09 6e 65 78 74 | 54 61 62 53 74 6f 70 0d |s...next|TabStop.|
|00002cc0| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 23 20 67 65 |.} else |{...# ge|
|00002cd0| 74 20 74 68 65 20 70 72 | 65 76 69 6f 75 73 20 77 |t the pr|evious w|
|00002ce0| 6f 72 64 3a 0d 09 09 62 | 61 63 6b 77 61 72 64 57 |ord:...b|ackwardW|
|00002cf0| 6f 72 64 0d 09 09 73 65 | 74 20 73 74 61 72 74 20 |ord...se|t start |
|00002d00| 5b 67 65 74 50 6f 73 5d | 0d 09 09 23 20 74 72 69 |[getPos]|...# tri|
|00002d10| 6d 20 74 68 65 20 6f 70 | 65 6e 69 6e 67 20 62 72 |m the op|ening br|
|00002d20| 61 63 65 3a 0d 09 09 73 | 65 74 20 6c 61 73 74 77 |ace:...s|et lastw|
|00002d30| 6f 72 64 20 5b 73 74 72 | 69 6e 67 20 74 72 69 6d |ord [str|ing trim|
|00002d40| 20 5b 67 65 74 54 65 78 | 74 20 5b 65 78 70 72 20 | [getTex|t [expr |
|00002d50| 24 73 74 61 72 74 2b 31 | 5d 20 24 70 6f 73 5d 20 |$start+1|] $pos] |
|00002d60| 22 5c 7b 22 5d 0d 09 09 | 23 20 63 68 65 63 6b 20 |"\{"]...|# check |
|00002d70| 69 66 20 69 74 27 73 20 | 61 20 5c 72 65 66 2d 6c |if it's |a \ref-l|
|00002d80| 69 6b 65 20 63 6f 6d 6d | 61 6e 64 3a 0d 09 09 73 |ike comm|and:...s|
|00002d90| 65 74 20 72 65 66 20 5b | 6c 73 65 61 72 63 68 20 |et ref [|lsearch |
|00002da0| 2d 65 78 61 63 74 20 24 | 54 65 58 6d 6f 64 65 56 |-exact $|TeXmodeV|
|00002db0| 61 72 73 28 72 65 66 43 | 6f 6d 6d 61 6e 64 73 29 |ars(refC|ommands)|
|00002dc0| 20 24 6c 61 73 74 77 6f | 72 64 5d 0d 09 09 69 66 | $lastwo|rd]...if|
|00002dd0| 20 7b 20 24 72 65 66 20 | 21 3d 20 2d 31 20 7d 20 | { $ref |!= -1 } |
|00002de0| 7b 0d 09 09 09 23 20 67 | 6f 74 20 61 20 5c 72 65 |{....# g|ot a \re|
|00002df0| 66 2d 6c 69 6b 65 20 63 | 6f 6d 6d 61 6e 64 3a 0d |f-like c|ommand:.|
|00002e00| 09 09 09 73 65 74 20 54 | 65 58 52 65 66 20 22 5c |...set T|eXRef "\|
|00002e10| 5c 5b 6c 69 6e 64 65 78 | 20 24 54 65 58 6d 6f 64 |\[lindex| $TeXmod|
|00002e20| 65 56 61 72 73 28 72 65 | 66 43 6f 6d 6d 61 6e 64 |eVars(re|fCommand|
|00002e30| 73 29 20 24 72 65 66 5d | 5c 7b 22 0d 09 09 09 23 |s) $ref]|\{"....#|
|00002e40| 20 6d 61 6b 65 20 73 75 | 72 65 20 77 65 20 68 61 | make su|re we ha|
|00002e50| 76 65 20 74 68 65 20 62 | 72 61 63 65 3a 0d 09 09 |ve the b|race:...|
|00002e60| 09 67 6f 74 6f 20 24 70 | 6f 73 0d 09 09 09 69 66 |.goto $p|os....if|
|00002e70| 20 7b 20 5b 6c 6f 6f 6b | 41 74 20 5b 65 78 70 72 | { [look|At [expr|
|00002e80| 20 24 70 6f 73 20 2d 31 | 5d 5d 20 21 3d 20 22 5c | $pos -1|]] != "\|
|00002e90| 7b 22 20 7d 20 7b 0d 09 | 09 09 09 69 6e 73 65 72 |{" } {..|...inser|
|00002ea0| 74 54 65 78 74 20 22 5c | 7b 22 0d 09 09 09 7d 0d |tText "\|{"....}.|
|00002eb0| 09 09 7d 20 65 6c 73 65 | 20 7b 0d 23 20 09 09 09 |..} else| {.# ...|
|00002ec0| 73 65 74 20 54 65 58 52 | 65 66 20 22 5c 5c 24 64 |set TeXR|ef "\\$d|
|00002ed0| 65 66 61 75 6c 74 52 65 | 66 43 6f 6d 6d 61 6e 64 |efaultRe|fCommand|
|00002ee0| 5c 7b 22 0d 09 09 09 23 | 20 57 68 79 20 67 6f 74 |\{"....#| Why got|
|00002ef0| 6f 20 24 70 6f 73 3f 0d | 09 09 09 67 6f 74 6f 20 |o $pos?.|...goto |
|00002f00| 24 70 6f 73 0d 09 09 09 | 69 6e 73 65 72 74 54 65 |$pos....|insertTe|
|00002f10| 78 74 20 24 54 65 58 52 | 65 66 0d 09 09 7d 0d 09 |xt $TeXR|ef...}..|
|00002f20| 09 73 65 74 20 63 6f 6d | 70 6c 65 74 69 6f 6e 5f |.set com|pletion_|
|00002f30| 67 6f 74 20 24 54 65 58 | 52 65 66 0d 09 09 73 65 |got $TeX|Ref...se|
|00002f40| 74 20 63 6f 6d 70 6c 65 | 74 69 6f 6e 5f 6c 6f 6f |t comple|tion_loo|
|00002f50| 6b 69 6e 67 20 22 6c 61 | 62 65 6c 5c 7b 22 0d 09 |king "la|bel\{"..|
|00002f60| 09 77 6f 72 64 43 6f 6d | 70 6c 65 74 69 6f 6e 20 |.wordCom|pletion |
|00002f70| 24 54 65 58 52 65 66 20 | 22 6c 61 62 65 6c 5c 7b |$TeXRef |"label\{|
|00002f80| 22 0d 09 09 6d 65 73 73 | 61 67 65 20 22 70 72 65 |"...mess|age "pre|
|00002f90| 73 73 20 3c 43 74 6c 20 | 4f 70 74 20 58 3e 20 6f |ss <Ctl |Opt X> o|
|00002fa0| 72 20 3c 43 74 6c 20 4f | 70 74 20 50 3e 20 66 6f |r <Ctl O|pt P> fo|
|00002fb0| 72 20 61 6e 6f 74 68 65 | 72 20 6c 61 62 65 6c 22 |r anothe|r label"|
|00002fc0| 0d 09 7d 0d 7d 0d 0d 23 | 2d 2d 2d 2d 2d 2d 2d 2d |..}.}..#|--------|
|00002fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003010| 2d 2d 0d 23 20 49 6e 73 | 65 72 74 69 6f 6e 20 72 |--.# Ins|ertion r|
|00003020| 6f 75 74 69 6e 65 73 3a | 0d 23 2d 2d 2d 2d 2d 2d |outines:|.#------|
|00003030| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003040| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003050| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003060| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003070| 2d 2d 2d 2d 0d 0d 23 20 | 52 65 74 75 72 6e 73 20 |----..# |Returns |
|00003080| 61 20 6d 6f 64 69 66 69 | 65 64 20 74 65 78 74 20 |a modifi|ed text |
|00003090| 73 74 72 69 6e 67 20 69 | 66 20 74 68 65 20 73 74 |string i|f the st|
|000030a0| 72 69 6e 67 20 24 74 65 | 78 74 20 69 73 20 6e 6f |ring $te|xt is no|
|000030b0| 6e 2d 6e 75 6c 6c 2c 20 | 0d 23 20 61 6e 64 20 74 |n-null, |.# and t|
|000030c0| 68 65 20 6e 75 6c 6c 20 | 73 74 72 69 6e 67 20 6f |he null |string o|
|000030d0| 74 68 65 72 77 69 73 65 | 2e 20 20 54 68 65 20 61 |therwise|. The a|
|000030e0| 72 67 75 6d 65 6e 74 20 | 27 6f 70 65 72 61 74 69 |rgument |'operati|
|000030f0| 6f 6e 27 20 69 73 20 61 | 20 0d 23 20 73 74 72 69 |on' is a| .# stri|
|00003100| 6e 67 20 64 69 72 65 63 | 74 69 6e 67 20 27 64 6f |ng direc|ting 'do|
|00003110| 50 72 65 66 69 78 54 65 | 78 74 27 20 74 6f 20 65 |PrefixTe|xt' to e|
|00003120| 69 74 68 65 72 20 22 69 | 6e 73 65 72 74 22 20 6f |ither "i|nsert" o|
|00003130| 72 20 22 72 65 6d 6f 76 | 65 22 20 0d 23 20 24 70 |r "remov|e" .# $p|
|00003140| 72 65 66 69 78 53 74 72 | 69 6e 67 20 74 6f 2f 66 |refixStr|ing to/f|
|00003150| 72 6f 6d 20 65 61 63 68 | 20 6c 69 6e 65 20 6f 66 |rom each| line of|
|00003160| 20 24 74 65 78 74 2e 20 | 20 28 54 68 69 73 20 72 | $text. | (This r|
|00003170| 6f 75 74 69 6e 65 20 69 | 73 0d 23 20 61 64 61 70 |outine i|s.# adap|
|00003180| 74 65 64 20 66 72 6f 6d | 20 73 74 72 69 6e 67 73 |ted from| strings|
|00003190| 2e 74 63 6c 2e 29 0d 23 | 20 70 72 6f 63 20 64 6f |.tcl.).#| proc do|
|000031a0| 50 72 65 66 69 78 54 65 | 78 74 20 7b 6f 70 65 72 |PrefixTe|xt {oper|
|000031b0| 61 74 69 6f 6e 20 70 72 | 65 66 69 78 53 74 72 69 |ation pr|efixStri|
|000031c0| 6e 67 20 74 65 78 74 7d | 20 7b 0d 23 20 09 69 66 |ng text}| {.# .if|
|000031d0| 20 7b 24 74 65 78 74 20 | 3d 3d 20 22 22 7d 20 7b | {$text |== ""} {|
|000031e0| 72 65 74 75 72 6e 20 22 | 22 7d 0d 23 20 09 73 65 |return "|"}.# .se|
|000031f0| 74 20 70 72 65 66 20 5b | 71 75 6f 74 65 45 78 70 |t pref [|quoteExp|
|00003200| 72 20 24 70 72 65 66 69 | 78 53 74 72 69 6e 67 5d |r $prefi|xString]|
|00003210| 0d 23 20 09 69 66 20 7b | 24 6f 70 65 72 61 74 69 |.# .if {|$operati|
|00003220| 6f 6e 20 3d 3d 20 22 69 | 6e 73 65 72 74 22 7d 20 |on == "i|nsert"} |
|00003230| 74 68 65 6e 20 7b 0d 23 | 20 09 09 73 65 74 20 74 |then {.#| ..set t|
|00003240| 72 61 69 6c 43 68 61 72 | 20 22 22 0d 23 20 09 09 |railChar| "".# ..|
|00003250| 73 65 74 20 74 65 78 74 | 4c 65 6e 20 5b 73 74 72 |set text|Len [str|
|00003260| 69 6e 67 20 6c 65 6e 67 | 74 68 20 24 74 65 78 74 |ing leng|th $text|
|00003270| 5d 0d 23 20 09 09 69 66 | 20 7b 5b 73 74 72 69 6e |].# ..if| {[strin|
|00003280| 67 20 69 6e 64 65 78 20 | 24 74 65 78 74 20 5b 65 |g index |$text [e|
|00003290| 78 70 72 20 24 74 65 78 | 74 4c 65 6e 2d 31 5d 5d |xpr $tex|tLen-1]]|
|000032a0| 20 3d 3d 20 22 5c 72 22 | 7d 20 74 68 65 6e 20 7b | == "\r"|} then {|
|000032b0| 0d 23 20 09 09 09 73 65 | 74 20 74 65 78 74 20 5b |.# ...se|t text [|
|000032c0| 73 74 72 69 6e 67 20 72 | 61 6e 67 65 20 24 74 65 |string r|ange $te|
|000032d0| 78 74 20 30 20 5b 65 78 | 70 72 20 24 74 65 78 74 |xt 0 [ex|pr $text|
|000032e0| 4c 65 6e 2d 32 5d 5d 0d | 23 20 09 09 09 73 65 74 |Len-2]].|# ...set|
|000032f0| 20 74 72 61 69 6c 43 68 | 61 72 20 22 5c 72 22 0d | trailCh|ar "\r".|
|00003300| 23 20 09 09 7d 0d 23 20 | 09 09 73 65 74 20 73 74 |# ..}.# |..set st|
|00003310| 72 20 5c 72 24 70 72 65 | 66 69 78 53 74 72 69 6e |r \r$pre|fixStrin|
|00003320| 67 0d 23 20 09 09 72 65 | 67 73 75 62 20 2d 61 6c |g.# ..re|gsub -al|
|00003330| 6c 20 5c 72 20 24 74 65 | 78 74 20 24 73 74 72 20 |l \r $te|xt $str |
|00003340| 74 65 78 74 0d 23 20 09 | 09 72 65 74 75 72 6e 20 |text.# .|.return |
|00003350| 24 70 72 65 66 69 78 53 | 74 72 69 6e 67 24 74 65 |$prefixS|tring$te|
|00003360| 78 74 24 74 72 61 69 6c | 43 68 61 72 0d 23 20 09 |xt$trail|Char.# .|
|00003370| 7d 20 65 6c 73 65 69 66 | 20 7b 24 6f 70 65 72 61 |} elseif| {$opera|
|00003380| 74 69 6f 6e 20 3d 3d 20 | 22 72 65 6d 6f 76 65 22 |tion == |"remove"|
|00003390| 7d 20 74 68 65 6e 20 7b | 0d 23 20 09 09 72 65 67 |} then {|.# ..reg|
|000033a0| 73 75 62 20 2d 61 6c 6c | 20 5c 72 24 70 72 65 66 |sub -all| \r$pref|
|000033b0| 20 24 74 65 78 74 20 5c | 72 20 74 65 78 74 0d 23 | $text \|r text.#|
|000033c0| 20 09 09 72 65 67 73 75 | 62 20 5e 24 70 72 65 66 | ..regsu|b ^$pref|
|000033d0| 20 24 74 65 78 74 20 22 | 22 20 74 65 78 74 0d 23 | $text "|" text.#|
|000033e0| 20 09 09 72 65 74 75 72 | 6e 20 24 74 65 78 74 0d | ..retur|n $text.|
|000033f0| 23 20 09 7d 0d 23 20 7d | 0d 0d 23 20 53 68 69 66 |# .}.# }|..# Shif|
|00003400| 74 20 65 61 63 68 20 6c | 69 6e 65 20 6f 66 20 24 |t each l|ine of $|
|00003410| 74 65 78 74 20 74 6f 20 | 74 68 65 20 72 69 67 68 |text to |the righ|
|00003420| 74 20 62 79 20 69 6e 73 | 65 72 74 69 6e 67 20 61 |t by ins|erting a|
|00003430| 20 73 74 72 69 6e 67 20 | 6f 66 0d 23 20 24 77 68 | string |of.# $wh|
|00003440| 69 74 65 73 70 61 63 65 | 20 63 68 61 72 61 63 74 |itespace| charact|
|00003450| 65 72 73 20 61 74 20 74 | 68 65 20 62 65 67 69 6e |ers at t|he begin|
|00003460| 6e 69 6e 67 20 6f 66 20 | 65 61 63 68 20 6c 69 6e |ning of |each lin|
|00003470| 65 2c 20 72 65 74 75 72 | 6e 69 6e 67 0d 23 20 74 |e, retur|ning.# t|
|00003480| 68 65 20 72 65 73 75 6c | 74 69 6e 67 20 73 74 72 |he resul|ting str|
|00003490| 69 6e 67 2e 0d 70 72 6f | 63 20 73 68 69 66 74 54 |ing..pro|c shiftT|
|000034a0| 65 78 74 52 69 67 68 74 | 20 7b 74 65 78 74 20 77 |extRight| {text w|
|000034b0| 68 69 74 65 73 70 61 63 | 65 7d 20 7b 0d 09 72 65 |hitespac|e} {..re|
|000034c0| 74 75 72 6e 20 5b 64 6f | 50 72 65 66 69 78 54 65 |turn [do|PrefixTe|
|000034d0| 78 74 20 22 69 6e 73 65 | 72 74 22 20 24 77 68 69 |xt "inse|rt" $whi|
|000034e0| 74 65 73 70 61 63 65 20 | 24 74 65 78 74 5d 0d 7d |tespace |$text].}|
|000034f0| 0d 0d 23 20 52 65 74 75 | 72 6e 20 61 20 73 74 72 |..# Retu|rn a str|
|00003500| 69 6e 67 20 6f 66 20 77 | 68 69 74 65 73 70 61 63 |ing of w|hitespac|
|00003510| 65 20 63 68 61 72 61 63 | 74 65 72 73 20 66 72 6f |e charac|ters fro|
|00003520| 6d 20 74 68 65 20 62 65 | 67 69 6e 6e 69 6e 67 20 |m the be|ginning |
|00003530| 0d 23 20 6f 66 20 74 68 | 65 20 6c 69 6e 65 20 63 |.# of th|e line c|
|00003540| 6f 6e 74 61 69 6e 69 6e | 67 20 24 70 6f 73 20 75 |ontainin|g $pos u|
|00003550| 70 20 74 6f 20 74 68 65 | 20 66 69 72 73 74 20 6e |p to the| first n|
|00003560| 6f 6e 2d 77 68 69 74 65 | 73 70 61 63 65 20 0d 23 |on-white|space .#|
|00003570| 20 63 68 61 72 61 63 74 | 65 72 2e 0d 70 72 6f 63 | charact|er..proc|
|00003580| 20 67 65 74 49 6e 64 65 | 6e 74 61 74 69 6f 6e 20 | getInde|ntation |
|00003590| 7b 70 6f 73 7d 20 7b 0d | 09 73 65 74 20 74 65 78 |{pos} {.|.set tex|
|000035a0| 74 20 5b 67 65 74 54 65 | 78 74 20 5b 6c 69 6e 65 |t [getTe|xt [line|
|000035b0| 53 74 61 72 74 20 24 70 | 6f 73 5d 20 5b 6e 65 78 |Start $p|os] [nex|
|000035c0| 74 4c 69 6e 65 53 74 61 | 72 74 20 24 70 6f 73 5d |tLineSta|rt $pos]|
|000035d0| 5d 0d 09 72 65 67 65 78 | 70 20 7b 5e 5b 20 5c 74 |]..regex|p {^[ \t|
|000035e0| 5d 2a 7d 20 24 74 65 78 | 74 20 74 68 65 49 6e 64 |]*} $tex|t theInd|
|000035f0| 65 6e 74 61 74 69 6f 6e | 0d 09 72 65 74 75 72 6e |entation|..return|
|00003600| 20 24 74 68 65 49 6e 64 | 65 6e 74 61 74 69 6f 6e | $theInd|entation|
|00003610| 0d 7d 0d 0d 23 20 52 65 | 74 75 72 6e 20 61 6e 20 |.}..# Re|turn an |
|00003620| 22 69 6e 64 65 6e 74 65 | 64 20 63 61 72 72 69 61 |"indente|d carria|
|00003630| 67 65 20 72 65 74 75 72 | 6e 22 20 69 66 20 61 6e |ge retur|n" if an|
|00003640| 79 20 63 68 61 72 61 63 | 74 65 72 20 70 72 65 63 |y charac|ter prec|
|00003650| 65 64 69 6e 67 20 0d 23 | 20 74 68 65 20 69 6e 73 |eding .#| the ins|
|00003660| 65 72 74 69 6f 6e 20 70 | 6f 69 6e 74 20 28 6f 6e |ertion p|oint (on|
|00003670| 20 74 68 65 20 73 61 6d | 65 20 6c 69 6e 65 29 20 | the sam|e line) |
|00003680| 69 73 20 61 20 6e 6f 6e | 2d 77 68 69 74 65 73 70 |is a non|-whitesp|
|00003690| 61 63 65 20 0d 23 20 63 | 68 61 72 61 63 74 65 72 |ace .# c|haracter|
|000036a0| 2e 20 20 4f 74 68 65 72 | 77 69 73 65 2c 20 72 65 |. Other|wise, re|
|000036b0| 74 75 72 6e 20 74 68 65 | 20 6e 75 6c 6c 20 73 74 |turn the| null st|
|000036c0| 72 69 6e 67 2e 0d 70 72 | 6f 63 20 6f 70 65 6e 69 |ring..pr|oc openi|
|000036d0| 6e 67 43 61 72 72 69 61 | 67 65 52 65 74 75 72 6e |ngCarria|geReturn|
|000036e0| 20 7b 7d 20 7b 0d 09 73 | 65 74 20 70 6f 73 20 5b | {} {..s|et pos [|
|000036f0| 67 65 74 50 6f 73 5d 0d | 09 73 65 74 20 65 6e 64 |getPos].|.set end|
|00003700| 20 24 70 6f 73 0d 09 73 | 65 74 20 73 74 61 72 74 | $pos..s|et start|
|00003710| 20 5b 6c 69 6e 65 53 74 | 61 72 74 20 24 70 6f 73 | [lineSt|art $pos|
|00003720| 5d 0d 09 73 65 74 20 74 | 65 78 74 20 5b 67 65 74 |]..set t|ext [get|
|00003730| 54 65 78 74 20 24 73 74 | 61 72 74 20 24 65 6e 64 |Text $st|art $end|
|00003740| 5d 0d 09 69 66 20 7b 5b | 69 73 57 68 69 74 65 73 |]..if {[|isWhites|
|00003750| 70 61 63 65 20 24 74 65 | 78 74 5d 7d 20 74 68 65 |pace $te|xt]} the|
|00003760| 6e 20 7b 0d 09 09 69 66 | 20 7b 24 73 74 61 72 74 |n {...if| {$start|
|00003770| 20 3d 3d 20 24 65 6e 64 | 7d 20 7b 72 65 74 75 72 | == $end|} {retur|
|00003780| 6e 20 5b 67 65 74 49 6e | 64 65 6e 74 61 74 69 6f |n [getIn|dentatio|
|00003790| 6e 20 24 70 6f 73 5d 7d | 20 7b 72 65 74 75 72 6e |n $pos]}| {return|
|000037a0| 20 22 22 7d 0d 09 7d 20 | 65 6c 73 65 20 7b 0d 09 | ""}..} |else {..|
|000037b0| 09 72 65 74 75 72 6e 20 | 22 5c 72 5b 67 65 74 49 |.return |"\r[getI|
|000037c0| 6e 64 65 6e 74 61 74 69 | 6f 6e 20 24 70 6f 73 5d |ndentati|on $pos]|
|000037d0| 22 0d 09 7d 0d 7d 0d 23 | 20 52 65 74 75 72 6e 20 |"..}.}.#| Return |
|000037e0| 61 6e 20 22 69 6e 64 65 | 6e 74 65 64 20 63 61 72 |an "inde|nted car|
|000037f0| 72 69 61 67 65 20 72 65 | 74 75 72 6e 22 20 69 66 |riage re|turn" if|
|00003800| 20 61 6e 79 20 63 68 61 | 72 61 63 74 65 72 20 66 | any cha|racter f|
|00003810| 6f 6c 6c 6f 77 69 6e 67 | 20 0d 23 20 74 68 65 20 |ollowing| .# the |
|00003820| 69 6e 73 65 72 74 69 6f | 6e 20 70 6f 69 6e 74 20 |insertio|n point |
|00003830| 28 6f 6e 20 74 68 65 20 | 73 61 6d 65 20 6c 69 6e |(on the |same lin|
|00003840| 65 29 20 69 73 20 61 20 | 6e 6f 6e 2d 77 68 69 74 |e) is a |non-whit|
|00003850| 65 73 70 61 63 65 20 0d | 23 20 63 68 61 72 61 63 |espace .|# charac|
|00003860| 74 65 72 2e 20 20 4f 74 | 68 65 72 77 69 73 65 2c |ter. Ot|herwise,|
|00003870| 20 72 65 74 75 72 6e 20 | 74 68 65 20 6e 75 6c 6c | return |the null|
|00003880| 20 73 74 72 69 6e 67 2e | 0d 70 72 6f 63 20 63 6c | string.|.proc cl|
|00003890| 6f 73 69 6e 67 43 61 72 | 72 69 61 67 65 52 65 74 |osingCar|riageRet|
|000038a0| 75 72 6e 20 7b 7d 20 7b | 0d 09 73 65 74 20 70 6f |urn {} {|..set po|
|000038b0| 73 20 5b 73 65 6c 45 6e | 64 5d 0d 09 69 66 20 7b |s [selEn|d]..if {|
|000038c0| 5b 69 73 53 65 6c 65 63 | 74 69 6f 6e 5d 20 26 26 |[isSelec|tion] &&|
|000038d0| 20 28 24 70 6f 73 20 3d | 3d 20 5b 6c 69 6e 65 53 | ($pos =|= [lineS|
|000038e0| 74 61 72 74 20 24 70 6f | 73 5d 29 7d 20 74 68 65 |tart $po|s])} the|
|000038f0| 6e 20 7b 0d 09 09 72 65 | 74 75 72 6e 20 22 5c 72 |n {...re|turn "\r|
|00003900| 22 0d 09 7d 20 65 6c 73 | 65 20 7b 0d 09 09 73 65 |"..} els|e {...se|
|00003910| 74 20 73 74 61 72 74 20 | 24 70 6f 73 0d 09 09 73 |t start |$pos...s|
|00003920| 65 74 20 65 6e 64 20 5b | 6e 65 78 74 4c 69 6e 65 |et end [|nextLine|
|00003930| 53 74 61 72 74 20 24 73 | 74 61 72 74 5d 0d 09 09 |Start $s|tart]...|
|00003940| 73 65 74 20 74 65 78 74 | 20 5b 67 65 74 54 65 78 |set text| [getTex|
|00003950| 74 20 24 73 74 61 72 74 | 20 24 65 6e 64 5d 0d 09 |t $start| $end]..|
|00003960| 09 69 66 20 7b 5b 69 73 | 57 68 69 74 65 73 70 61 |.if {[is|Whitespa|
|00003970| 63 65 20 24 74 65 78 74 | 5d 7d 20 74 68 65 6e 20 |ce $text|]} then |
|00003980| 7b 0d 09 09 09 72 65 74 | 75 72 6e 20 22 22 0d 09 |{....ret|urn ""..|
|00003990| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 09 72 65 74 |.} else |{....ret|
|000039a0| 75 72 6e 20 22 5c 72 5b | 67 65 74 49 6e 64 65 6e |urn "\r[|getInden|
|000039b0| 74 61 74 69 6f 6e 20 24 | 70 6f 73 5d 22 0d 09 09 |tation $|pos]"...|
|000039c0| 7d 0d 09 7d 0d 7d 0d 0d | 23 20 49 6e 73 65 72 74 |}..}.}..|# Insert|
|000039d0| 20 61 6e 20 6f 62 6a 65 | 63 74 20 61 74 20 74 68 | an obje|ct at th|
|000039e0| 65 20 69 6e 73 65 72 74 | 69 6f 6e 20 70 6f 69 6e |e insert|ion poin|
|000039f0| 74 2e 20 49 66 20 74 68 | 65 72 65 20 69 73 20 61 |t. If th|ere is a|
|00003a00| 20 73 65 6c 65 63 74 69 | 6f 6e 20 61 6e 64 20 74 | selecti|on and t|
|00003a10| 68 65 20 0d 23 20 67 6c | 6f 62 61 6c 20 76 61 72 |he .# gl|obal var|
|00003a20| 69 61 62 6c 65 20 27 64 | 65 6c 65 74 65 4f 62 6a |iable 'd|eleteObj|
|00003a30| 4e 6f 69 73 69 6c 79 27 | 20 69 73 20 66 61 6c 73 |Noisily'| is fals|
|00003a40| 65 2c 20 71 75 69 65 74 | 6c 79 20 64 65 6c 65 74 |e, quiet|ly delet|
|00003a50| 65 20 74 68 65 20 73 65 | 6c 65 63 74 69 6f 6e 20 |e the se|lection |
|00003a60| 0d 23 20 28 6c 69 6b 65 | 20 27 70 61 73 74 65 27 |.# (like| 'paste'|
|00003a70| 29 2e 20 4f 74 68 65 72 | 77 69 73 65 2c 20 70 72 |). Other|wise, pr|
|00003a80| 6f 6d 70 74 20 74 68 65 | 20 75 73 65 72 20 66 6f |ompt the| user fo|
|00003a90| 72 20 74 68 65 20 61 70 | 70 72 6f 70 72 69 61 74 |r the ap|propriat|
|00003aa0| 65 20 61 63 74 69 6f 6e | 2e 20 0d 23 20 52 65 74 |e action|. .# Ret|
|00003ab0| 75 72 6e 73 20 74 72 75 | 65 20 69 66 20 74 68 65 |urns tru|e if the|
|00003ac0| 20 6f 62 6a 65 63 74 20 | 69 73 20 75 6c 74 69 6d | object |is ultim|
|00003ad0| 61 74 65 6c 79 20 69 6e | 73 65 72 74 65 64 2c 20 |ately in|serted, |
|00003ae0| 61 6e 64 20 66 61 6c 73 | 65 20 69 66 20 74 68 65 |and fals|e if the|
|00003af0| 20 0d 23 20 75 73 65 72 | 20 63 61 6e 63 65 6c 73 | .# user| cancels|
|00003b00| 20 74 68 65 20 6f 70 65 | 72 61 74 69 6f 6e 2e 20 | the ope|ration. |
|00003b10| 0d 70 72 6f 63 20 69 6e | 73 65 72 74 4f 62 6a 65 |.proc in|sertObje|
|00003b20| 63 74 20 7b 6f 62 6a 65 | 63 74 4e 61 6d 65 7d 20 |ct {obje|ctName} |
|00003b30| 7b 0d 09 67 6c 6f 62 61 | 6c 20 54 65 58 6d 6f 64 |{..globa|l TeXmod|
|00003b40| 65 56 61 72 73 0d 09 69 | 66 20 7b 5b 69 73 53 65 |eVars..i|f {[isSe|
|00003b50| 6c 65 63 74 69 6f 6e 5d | 7d 20 74 68 65 6e 20 7b |lection]|} then {|
|00003b60| 0d 09 09 69 66 20 7b 24 | 54 65 58 6d 6f 64 65 56 |...if {$|TeXmodeV|
|00003b70| 61 72 73 28 64 65 6c 65 | 74 65 4f 62 6a 4e 6f 69 |ars(dele|teObjNoi|
|00003b80| 73 69 6c 79 29 7d 20 74 | 68 65 6e 20 7b 0d 09 09 |sily)} t|hen {...|
|00003b90| 09 73 77 69 74 63 68 20 | 5b 61 73 6b 79 65 73 6e |.switch |[askyesn|
|00003ba0| 6f 20 2d 63 20 22 44 65 | 6c 65 74 65 20 73 65 6c |o -c "De|lete sel|
|00003bb0| 65 63 74 69 6f 6e 3f 22 | 5d 20 7b 0d 09 09 09 09 |ection?"|] {.....|
|00003bc0| 22 79 65 73 22 20 7b 64 | 65 6c 65 74 65 54 65 78 |"yes" {d|eleteTex|
|00003bd0| 74 20 5b 67 65 74 50 6f | 73 5d 20 5b 73 65 6c 45 |t [getPo|s] [selE|
|00003be0| 6e 64 5d 7d 0d 09 09 09 | 09 22 6e 6f 22 20 7b 62 |nd]}....|."no" {b|
|00003bf0| 61 63 6b 77 61 72 64 43 | 68 61 72 7d 0d 09 09 09 |ackwardC|har}....|
|00003c00| 09 22 63 61 6e 63 65 6c | 22 20 7b 72 65 74 75 72 |."cancel|" {retur|
|00003c10| 6e 20 30 7d 0d 09 09 09 | 7d 0d 09 09 7d 20 65 6c |n 0}....|}...} el|
|00003c20| 73 65 20 7b 0d 09 09 09 | 64 65 6c 65 74 65 54 65 |se {....|deleteTe|
|00003c30| 78 74 20 5b 67 65 74 50 | 6f 73 5d 20 5b 73 65 6c |xt [getP|os] [sel|
|00003c40| 45 6e 64 5d 0d 09 09 7d | 0d 09 7d 0d 09 69 6e 73 |End]...}|..}..ins|
|00003c50| 65 72 74 54 65 78 74 20 | 24 6f 62 6a 65 63 74 4e |ertText |$objectN|
|00003c60| 61 6d 65 0d 09 72 65 74 | 75 72 6e 20 31 0d 7d 0d |ame..ret|urn 1.}.|
|00003c70| 0d 23 20 49 6e 73 65 72 | 74 20 61 6e 20 6f 62 6a |.# Inser|t an obj|
|00003c80| 65 63 74 20 61 74 20 74 | 68 65 20 69 6e 73 65 72 |ect at t|he inser|
|00003c90| 74 69 6f 6e 20 70 6f 69 | 6e 74 2e 20 49 66 20 74 |tion poi|nt. If t|
|00003ca0| 68 65 72 65 20 69 73 20 | 61 20 73 65 6c 65 63 74 |here is |a select|
|00003cb0| 69 6f 6e 2c 20 77 72 61 | 70 20 0d 23 20 69 74 20 |ion, wra|p .# it |
|00003cc0| 69 6e 73 69 64 65 20 74 | 68 65 20 70 61 72 61 6d |inside t|he param|
|00003cd0| 65 74 65 72 73 20 24 6c | 65 66 74 20 61 6e 64 20 |eters $l|eft and |
|00003ce0| 24 72 69 67 68 74 2e 20 | 52 65 74 75 72 6e 73 20 |$right. |Returns |
|00003cf0| 74 72 75 65 20 69 66 20 | 74 68 65 72 65 20 69 73 |true if |there is|
|00003d00| 20 61 20 0d 23 20 73 65 | 6c 65 63 74 69 6f 6e 20 | a .# se|lection |
|00003d10| 28 69 6e 20 77 68 69 63 | 68 20 63 61 73 65 20 69 |(in whic|h case i|
|00003d20| 74 20 77 69 6c 6c 20 77 | 72 61 70 29 2c 20 61 6e |t will w|rap), an|
|00003d30| 64 20 66 61 6c 73 65 20 | 6f 74 68 65 72 77 69 73 |d false |otherwis|
|00003d40| 65 2e 20 0d 70 72 6f 63 | 20 77 72 61 70 4f 62 6a |e. .proc| wrapObj|
|00003d50| 65 63 74 20 7b 6c 65 66 | 74 20 72 69 67 68 74 7d |ect {lef|t right}|
|00003d60| 20 7b 0d 09 73 65 74 20 | 63 75 72 72 65 6e 74 50 | {..set |currentP|
|00003d70| 6f 73 20 5b 67 65 74 50 | 6f 73 5d 0d 09 73 65 74 |os [getP|os]..set|
|00003d80| 20 73 65 6c 65 63 74 65 | 64 20 5b 69 73 53 65 6c | selecte|d [isSel|
|00003d90| 65 63 74 69 6f 6e 5d 0d | 09 69 66 20 7b 24 73 65 |ection].|.if {$se|
|00003da0| 6c 65 63 74 65 64 7d 20 | 74 68 65 6e 20 7b 0d 09 |lected} |then {..|
|00003db0| 09 72 65 70 6c 61 63 65 | 54 65 78 74 20 24 63 75 |.replace|Text $cu|
|00003dc0| 72 72 65 6e 74 50 6f 73 | 20 5b 73 65 6c 45 6e 64 |rrentPos| [selEnd|
|00003dd0| 5d 20 24 6c 65 66 74 20 | 5b 67 65 74 53 65 6c 65 |] $left |[getSele|
|00003de0| 63 74 5d 20 24 72 69 67 | 68 74 0d 09 7d 20 65 6c |ct] $rig|ht..} el|
|00003df0| 73 65 20 7b 0d 09 09 69 | 6e 73 65 72 74 54 65 78 |se {...i|nsertTex|
|00003e00| 74 20 24 6c 65 66 74 20 | 22 a5 22 20 24 72 69 67 |t $left |"." $rig|
|00003e10| 68 74 0d 09 7d 0d 09 67 | 6f 74 6f 20 24 63 75 72 |ht..}..g|oto $cur|
|00003e20| 72 65 6e 74 50 6f 73 0d | 09 6e 65 78 74 54 61 62 |rentPos.|.nextTab|
|00003e30| 53 74 6f 70 0d 09 72 65 | 74 75 72 6e 20 24 73 65 |Stop..re|turn $se|
|00003e40| 6c 65 63 74 65 64 0d 7d | 0d 0d 23 20 42 75 69 6c |lected.}|..# Buil|
|00003e50| 64 73 20 61 6e 64 20 72 | 65 74 75 72 6e 73 20 61 |ds and r|eturns a|
|00003e60| 20 4c 61 54 65 58 20 65 | 6e 76 69 72 6f 6e 6d 65 | LaTeX e|nvironme|
|00003e70| 6e 74 2c 20 74 68 61 74 | 20 69 73 2c 20 61 20 5c |nt, that| is, a \|
|00003e80| 62 65 67 69 6e 2e 2e 2e | 5c 65 6e 64 20 0d 23 20 |begin...|\end .# |
|00003e90| 70 61 69 72 2c 20 67 69 | 76 65 6e 20 74 68 65 20 |pair, gi|ven the |
|00003ea0| 6e 61 6d 65 20 6f 66 20 | 74 68 65 20 65 6e 76 69 |name of |the envi|
|00003eb0| 72 6f 6e 6d 65 6e 74 2c | 20 61 6e 20 61 72 67 75 |ronment,| an argu|
|00003ec0| 6d 65 6e 74 20 73 74 72 | 69 6e 67 2c 20 0d 23 20 |ment str|ing, .# |
|00003ed0| 61 6e 64 20 74 68 65 20 | 65 6e 76 69 72 6f 6e 6d |and the |environm|
|00003ee0| 65 6e 74 20 62 6f 64 79 | 2e 20 20 54 68 65 20 62 |ent body|. The b|
|00003ef0| 6f 64 79 20 73 68 6f 75 | 6c 64 20 62 65 20 70 61 |ody shou|ld be pa|
|00003f00| 73 73 65 64 20 74 6f 20 | 74 68 69 73 20 0d 23 20 |ssed to |this .# |
|00003f10| 70 72 6f 63 65 64 75 72 | 65 20 66 75 6c 6c 79 20 |procedur|e fully |
|00003f20| 66 6f 72 6d 61 74 74 65 | 64 2c 20 69 6e 63 6c 75 |formatte|d, inclu|
|00003f30| 64 69 6e 67 20 69 6e 64 | 65 6e 74 61 74 69 6f 6e |ding ind|entation|
|00003f40| 2e 0d 23 20 70 72 6f 63 | 20 62 75 69 6c 64 45 6e |..# proc| buildEn|
|00003f50| 76 69 72 6f 6e 6d 65 6e | 74 20 7b 65 6e 76 4e 61 |vironmen|t {envNa|
|00003f60| 6d 65 20 65 6e 76 41 72 | 67 20 65 6e 76 42 6f 64 |me envAr|g envBod|
|00003f70| 79 20 74 72 61 69 6c 69 | 6e 67 43 6f 6d 6d 65 6e |y traili|ngCommen|
|00003f80| 74 7d 20 7b 0d 23 20 09 | 73 65 74 20 69 6e 64 65 |t} {.# .|set inde|
|00003f90| 6e 74 20 5b 67 65 74 49 | 6e 64 65 6e 74 61 74 69 |nt [getI|ndentati|
|00003fa0| 6f 6e 20 5b 67 65 74 50 | 6f 73 5d 5d 0d 23 20 09 |on [getP|os]].# .|
|00003fb0| 73 65 74 20 65 6e 76 53 | 74 72 20 5b 6f 70 65 6e |set envS|tr [open|
|00003fc0| 69 6e 67 43 61 72 72 69 | 61 67 65 52 65 74 75 72 |ingCarri|ageRetur|
|00003fd0| 6e 5d 0d 23 20 09 61 70 | 70 65 6e 64 20 65 6e 76 |n].# .ap|pend env|
|00003fe0| 53 74 72 20 22 5c 5c 62 | 65 67 69 6e 7b 22 20 24 |Str "\\b|egin{" $|
|00003ff0| 65 6e 76 4e 61 6d 65 20 | 22 7d 22 0d 23 20 09 61 |envName |"}".# .a|
|00004000| 70 70 65 6e 64 20 65 6e | 76 53 74 72 20 24 65 6e |ppend en|vStr $en|
|00004010| 76 41 72 67 20 22 5c 72 | 22 0d 23 20 09 61 70 70 |vArg "\r|".# .app|
|00004020| 65 6e 64 20 65 6e 76 53 | 74 72 20 24 65 6e 76 42 |end envS|tr $envB|
|00004030| 6f 64 79 0d 23 20 09 61 | 70 70 65 6e 64 20 65 6e |ody.# .a|ppend en|
|00004040| 76 53 74 72 20 24 69 6e | 64 65 6e 74 20 22 5c 5c |vStr $in|dent "\\|
|00004050| 65 6e 64 7b 22 20 24 65 | 6e 76 4e 61 6d 65 20 22 |end{" $e|nvName "|
|00004060| 7d 24 74 72 61 69 6c 69 | 6e 67 43 6f 6d 6d 65 6e |}$traili|ngCommen|
|00004070| 74 22 0d 23 20 09 61 70 | 70 65 6e 64 20 65 6e 76 |t".# .ap|pend env|
|00004080| 53 74 72 20 5b 63 6c 6f | 73 69 6e 67 43 61 72 72 |Str [clo|singCarr|
|00004090| 69 61 67 65 52 65 74 75 | 72 6e 5d 0d 23 20 09 72 |iageRetu|rn].# .r|
|000040a0| 65 74 75 72 6e 20 24 65 | 6e 76 53 74 72 0d 23 20 |eturn $e|nvStr.# |
|000040b0| 7d 0d 0d 23 20 42 75 69 | 6c 64 73 20 61 6e 64 20 |}..# Bui|lds and |
|000040c0| 72 65 74 75 72 6e 73 20 | 61 20 4c 61 54 65 58 20 |returns |a LaTeX |
|000040d0| 65 6e 76 69 72 6f 6e 6d | 65 6e 74 2c 20 74 68 61 |environm|ent, tha|
|000040e0| 74 20 69 73 2c 20 61 20 | 5c 62 65 67 69 6e 2e 2e |t is, a |\begin..|
|000040f0| 2e 5c 65 6e 64 20 0d 23 | 20 70 61 69 72 2c 20 67 |.\end .#| pair, g|
|00004100| 69 76 65 6e 20 74 68 65 | 20 6e 61 6d 65 20 6f 66 |iven the| name of|
|00004110| 20 74 68 65 20 65 6e 76 | 69 72 6f 6e 6d 65 6e 74 | the env|ironment|
|00004120| 2c 20 61 6e 20 61 72 67 | 75 6d 65 6e 74 20 73 74 |, an arg|ument st|
|00004130| 72 69 6e 67 2c 20 0d 23 | 20 61 6e 64 20 74 68 65 |ring, .#| and the|
|00004140| 20 65 6e 76 69 72 6f 6e | 6d 65 6e 74 20 62 6f 64 | environ|ment bod|
|00004150| 79 2e 20 20 54 68 65 20 | 62 6f 64 79 20 73 68 6f |y. The |body sho|
|00004160| 75 6c 64 20 62 65 20 70 | 61 73 73 65 64 20 74 6f |uld be p|assed to|
|00004170| 20 74 68 69 73 20 0d 23 | 20 70 72 6f 63 65 64 75 | this .#| procedu|
|00004180| 72 65 20 66 75 6c 6c 79 | 20 66 6f 72 6d 61 74 74 |re fully| formatt|
|00004190| 65 64 2c 20 69 6e 63 6c | 75 64 69 6e 67 20 69 6e |ed, incl|uding in|
|000041a0| 64 65 6e 74 61 74 69 6f | 6e 2e 0d 70 72 6f 63 20 |dentatio|n..proc |
|000041b0| 62 75 69 6c 64 45 6e 76 | 69 72 6f 6e 6d 65 6e 74 |buildEnv|ironment|
|000041c0| 20 7b 65 6e 76 4e 61 6d | 65 20 65 6e 76 41 72 67 | {envNam|e envArg|
|000041d0| 20 65 6e 76 42 6f 64 79 | 20 74 72 61 69 6c 69 6e | envBody| trailin|
|000041e0| 67 43 6f 6d 6d 65 6e 74 | 7d 20 7b 0d 09 61 70 70 |gComment|} {..app|
|000041f0| 65 6e 64 20 62 65 67 53 | 74 72 75 63 74 20 22 5c |end begS|truct "\|
|00004200| 5c 62 65 67 69 6e 7b 22 | 20 24 65 6e 76 4e 61 6d |\begin{"| $envNam|
|00004210| 65 20 22 7d 22 20 24 65 | 6e 76 41 72 67 0d 09 61 |e "}" $e|nvArg..a|
|00004220| 70 70 65 6e 64 20 65 6e | 64 53 74 72 75 63 74 20 |ppend en|dStruct |
|00004230| 22 5c 5c 65 6e 64 7b 22 | 20 24 65 6e 76 4e 61 6d |"\\end{"| $envNam|
|00004240| 65 20 22 7d 24 74 72 61 | 69 6c 69 6e 67 43 6f 6d |e "}$tra|ilingCom|
|00004250| 6d 65 6e 74 22 0d 09 72 | 65 74 75 72 6e 20 5b 62 |ment"..r|eturn [b|
|00004260| 75 69 6c 64 53 74 72 75 | 63 74 75 72 65 20 24 62 |uildStru|cture $b|
|00004270| 65 67 53 74 72 75 63 74 | 20 24 65 6e 76 42 6f 64 |egStruct| $envBod|
|00004280| 79 20 24 65 6e 64 53 74 | 72 75 63 74 5d 0d 7d 0d |y $endSt|ruct].}.|
|00004290| 23 20 42 75 69 6c 64 73 | 20 61 6e 64 20 72 65 74 |# Builds| and ret|
|000042a0| 75 72 6e 73 20 61 20 66 | 75 6c 6c 79 2d 66 6f 72 |urns a f|ully-for|
|000042b0| 6d 65 64 20 73 74 72 75 | 63 74 75 72 65 2c 20 61 |med stru|cture, a|
|000042c0| 20 73 74 72 69 6e 67 20 | 6f 66 20 74 68 65 20 66 | string |of the f|
|000042d0| 6f 72 6d 0d 23 0d 23 20 | 20 20 3c 62 65 67 53 74 |orm.#.# | <begSt|
|000042e0| 72 75 63 74 3e 0d 23 20 | 20 20 20 20 3c 62 6f 64 |ruct>.# | <bod|
|000042f0| 79 53 74 72 75 63 74 3e | 0d 23 20 20 20 3c 65 6e |yStruct>|.# <en|
|00004300| 64 53 74 72 75 63 74 3e | 0d 23 0d 23 20 46 6f 72 |dStruct>|.#.# For|
|00004310| 20 65 78 61 6d 70 6c 65 | 2c 0d 23 0d 23 20 20 20 | example|,.#.# |
|00004320| 62 75 69 6c 64 53 74 72 | 75 63 74 75 72 65 20 22 |buildStr|ucture "|
|00004330| 69 66 20 7b a5 7d 20 7b | 22 20 22 5c 74 a5 5c 72 |if {.} {|" "\t.\r|
|00004340| 22 20 22 7d 22 0d 23 0d | 23 20 72 65 74 75 72 6e |" "}".#.|# return|
|00004350| 73 20 61 20 54 63 6c 20 | 69 66 2d 74 65 6d 70 6c |s a Tcl |if-templ|
|00004360| 61 74 65 2e 0d 23 0d 70 | 72 6f 63 20 62 75 69 6c |ate..#.p|roc buil|
|00004370| 64 53 74 72 75 63 74 75 | 72 65 20 7b 62 65 67 53 |dStructu|re {begS|
|00004380| 74 72 75 63 74 20 62 6f | 64 79 53 74 72 75 63 74 |truct bo|dyStruct|
|00004390| 20 65 6e 64 53 74 72 75 | 63 74 7d 20 7b 0d 09 73 | endStru|ct} {..s|
|000043a0| 65 74 20 69 6e 64 65 6e | 74 20 5b 67 65 74 49 6e |et inden|t [getIn|
|000043b0| 64 65 6e 74 61 74 69 6f | 6e 20 5b 67 65 74 50 6f |dentatio|n [getPo|
|000043c0| 73 5d 5d 0d 09 73 65 74 | 20 73 74 72 75 63 74 75 |s]]..set| structu|
|000043d0| 72 65 20 5b 6f 70 65 6e | 69 6e 67 43 61 72 72 69 |re [open|ingCarri|
|000043e0| 61 67 65 52 65 74 75 72 | 6e 5d 0d 09 61 70 70 65 |ageRetur|n]..appe|
|000043f0| 6e 64 20 73 74 72 75 63 | 74 75 72 65 20 24 62 65 |nd struc|ture $be|
|00004400| 67 53 74 72 75 63 74 20 | 22 5c 72 22 0d 09 61 70 |gStruct |"\r"..ap|
|00004410| 70 65 6e 64 20 73 74 72 | 75 63 74 75 72 65 20 24 |pend str|ucture $|
|00004420| 62 6f 64 79 53 74 72 75 | 63 74 0d 09 61 70 70 65 |bodyStru|ct..appe|
|00004430| 6e 64 20 73 74 72 75 63 | 74 75 72 65 20 24 69 6e |nd struc|ture $in|
|00004440| 64 65 6e 74 20 24 65 6e | 64 53 74 72 75 63 74 0d |dent $en|dStruct.|
|00004450| 09 61 70 70 65 6e 64 20 | 73 74 72 75 63 74 75 72 |.append |structur|
|00004460| 65 20 5b 63 6c 6f 73 69 | 6e 67 43 61 72 72 69 61 |e [closi|ngCarria|
|00004470| 67 65 52 65 74 75 72 6e | 5d 0d 09 72 65 74 75 72 |geReturn|]..retur|
|00004480| 6e 20 24 73 74 72 75 63 | 74 75 72 65 0d 7d 0d 0d |n $struc|ture.}..|
|00004490| 23 20 49 6e 73 65 72 74 | 73 20 61 20 4c 61 54 65 |# Insert|s a LaTe|
|000044a0| 58 20 65 6e 76 69 72 6f | 6e 6d 65 6e 74 20 77 69 |X enviro|nment wi|
|000044b0| 74 68 20 74 68 65 20 73 | 70 65 63 69 66 69 65 64 |th the s|pecified|
|000044c0| 20 6e 61 6d 65 2c 20 61 | 72 67 75 6d 65 6e 74 2c | name, a|rgument,|
|000044d0| 20 0d 23 20 61 6e 64 20 | 62 6f 64 79 20 61 74 20 | .# and |body at |
|000044e0| 74 68 65 20 69 6e 73 65 | 72 74 69 6f 6e 20 70 6f |the inse|rtion po|
|000044f0| 69 6e 74 2e 20 20 50 6f | 73 69 74 69 6f 6e 73 20 |int. Po|sitions |
|00004500| 74 68 65 20 63 75 72 73 | 6f 72 20 61 74 20 74 68 |the curs|or at th|
|00004510| 65 20 0d 23 20 62 65 67 | 69 6e 6e 69 6e 67 20 6f |e .# beg|inning o|
|00004520| 66 20 74 68 65 20 65 6e | 76 69 72 6f 6e 6d 65 6e |f the en|vironmen|
|00004530| 74 2c 20 6c 65 61 76 69 | 6e 67 20 61 6e 79 20 73 |t, leavi|ng any s|
|00004540| 75 62 73 65 71 75 65 6e | 74 20 61 63 74 69 6f 6e |ubsequen|t action|
|00004550| 20 74 6f 20 74 68 65 20 | 0d 23 20 63 61 6c 6c 69 | to the |.# calli|
|00004560| 6e 67 20 70 72 6f 63 65 | 64 75 72 65 2e 20 20 44 |ng proce|dure. D|
|00004570| 65 6c 65 74 65 73 20 74 | 68 65 20 63 75 72 72 65 |eletes t|he curre|
|00004580| 6e 74 20 73 65 6c 65 63 | 74 69 6f 6e 20 71 75 69 |nt selec|tion qui|
|00004590| 65 74 6c 79 20 69 66 20 | 74 68 65 20 0d 23 20 67 |etly if |the .# g|
|000045a0| 6c 6f 62 61 6c 20 76 61 | 72 69 61 62 6c 65 20 27 |lobal va|riable '|
|000045b0| 64 65 6c 65 74 65 45 6e | 76 4e 6f 69 73 69 6c 79 |deleteEn|vNoisily|
|000045c0| 27 20 69 73 20 66 61 6c | 73 65 3b 20 6f 74 68 65 |' is fal|se; othe|
|000045d0| 72 77 69 73 65 20 0d 23 | 20 74 68 65 20 75 73 65 |rwise .#| the use|
|000045e0| 72 20 69 73 20 70 72 6f | 6d 70 74 65 64 20 66 6f |r is pro|mpted fo|
|000045f0| 72 20 64 69 72 65 63 74 | 69 6f 6e 73 2e 20 20 52 |r direct|ions. R|
|00004600| 65 74 75 72 6e 73 20 74 | 72 75 65 20 69 66 20 74 |eturns t|rue if t|
|00004610| 68 65 20 0d 23 20 65 6e | 76 69 72 6f 6e 6d 65 6e |he .# en|vironmen|
|00004620| 74 20 69 73 20 75 6c 74 | 69 6d 61 74 65 6c 79 20 |t is ult|imately |
|00004630| 69 6e 73 65 72 74 65 64 | 2c 20 61 6e 64 20 66 61 |inserted|, and fa|
|00004640| 6c 73 65 20 69 66 20 74 | 68 65 20 75 73 65 72 20 |lse if t|he user |
|00004650| 63 61 6e 63 65 6c 73 20 | 0d 23 20 74 68 65 20 6f |cancels |.# the o|
|00004660| 70 65 72 61 74 69 6f 6e | 2e 0d 23 20 70 72 6f 63 |peration|..# proc|
|00004670| 20 69 6e 73 65 72 74 45 | 6e 76 69 72 6f 6e 6d 65 | insertE|nvironme|
|00004680| 6e 74 20 7b 65 6e 76 4e | 61 6d 65 20 65 6e 76 41 |nt {envN|ame envA|
|00004690| 72 67 20 65 6e 76 42 6f | 64 79 7d 20 7b 0d 23 20 |rg envBo|dy} {.# |
|000046a0| 09 67 6c 6f 62 61 6c 20 | 54 65 58 6d 6f 64 65 56 |.global |TeXmodeV|
|000046b0| 61 72 73 0d 23 20 09 69 | 66 20 7b 5b 69 73 53 65 |ars.# .i|f {[isSe|
|000046c0| 6c 65 63 74 69 6f 6e 5d | 7d 20 74 68 65 6e 20 7b |lection]|} then {|
|000046d0| 0d 23 20 09 09 69 66 20 | 7b 24 54 65 58 6d 6f 64 |.# ..if |{$TeXmod|
|000046e0| 65 56 61 72 73 28 64 65 | 6c 65 74 65 45 6e 76 4e |eVars(de|leteEnvN|
|000046f0| 6f 69 73 69 6c 79 29 7d | 20 74 68 65 6e 20 7b 0d |oisily)}| then {.|
|00004700| 23 20 09 09 09 73 77 69 | 74 63 68 20 5b 61 73 6b |# ...swi|tch [ask|
|00004710| 79 65 73 6e 6f 20 2d 63 | 20 22 44 65 6c 65 74 65 |yesno -c| "Delete|
|00004720| 20 73 65 6c 65 63 74 69 | 6f 6e 3f 22 5d 20 7b 0d | selecti|on?"] {.|
|00004730| 23 20 09 09 09 09 22 79 | 65 73 22 20 7b 7d 0d 23 |# ...."y|es" {}.#|
|00004740| 20 09 09 09 09 22 6e 6f | 22 20 7b 62 61 63 6b 77 | ...."no|" {backw|
|00004750| 61 72 64 43 68 61 72 7d | 0d 23 20 09 09 09 09 22 |ardChar}|.# ...."|
|00004760| 63 61 6e 63 65 6c 22 20 | 7b 72 65 74 75 72 6e 20 |cancel" |{return |
|00004770| 30 7d 0d 23 20 09 09 09 | 7d 0d 23 20 09 09 7d 0d |0}.# ...|}.# ..}.|
|00004780| 23 20 09 7d 0d 23 20 09 | 73 65 74 20 73 74 61 72 |# .}.# .|set star|
|00004790| 74 20 5b 67 65 74 50 6f | 73 5d 0d 23 20 09 73 65 |t [getPo|s].# .se|
|000047a0| 74 20 65 6e 64 20 5b 73 | 65 6c 45 6e 64 5d 0d 23 |t end [s|elEnd].#|
|000047b0| 20 09 73 65 74 20 62 6f | 64 79 20 5b 73 68 69 66 | .set bo|dy [shif|
|000047c0| 74 54 65 78 74 52 69 67 | 68 74 20 24 65 6e 76 42 |tTextRig|ht $envB|
|000047d0| 6f 64 79 20 5b 67 65 74 | 49 6e 64 65 6e 74 61 74 |ody [get|Indentat|
|000047e0| 69 6f 6e 20 24 73 74 61 | 72 74 5d 5d 0d 23 20 09 |ion $sta|rt]].# .|
|000047f0| 72 65 70 6c 61 63 65 54 | 65 78 74 20 24 73 74 61 |replaceT|ext $sta|
|00004800| 72 74 20 24 65 6e 64 20 | 5b 62 75 69 6c 64 45 6e |rt $end |[buildEn|
|00004810| 76 69 72 6f 6e 6d 65 6e | 74 20 24 65 6e 76 4e 61 |vironmen|t $envNa|
|00004820| 6d 65 20 24 65 6e 76 41 | 72 67 20 24 62 6f 64 79 |me $envA|rg $body|
|00004830| 20 22 a5 22 5d 0d 23 20 | 09 67 6f 74 6f 20 24 73 | "."].# |.goto $s|
|00004840| 74 61 72 74 0d 23 20 09 | 72 65 74 75 72 6e 20 31 |tart.# .|return 1|
|00004850| 0d 23 20 7d 0d 0d 23 20 | 49 6e 73 65 72 74 73 20 |.# }..# |Inserts |
|00004860| 61 20 4c 61 54 65 58 20 | 65 6e 76 69 72 6f 6e 6d |a LaTeX |environm|
|00004870| 65 6e 74 20 77 69 74 68 | 20 74 68 65 20 73 70 65 |ent with| the spe|
|00004880| 63 69 66 69 65 64 20 6e | 61 6d 65 2c 20 61 72 67 |cified n|ame, arg|
|00004890| 75 6d 65 6e 74 2c 20 0d | 23 20 61 6e 64 20 62 6f |ument, .|# and bo|
|000048a0| 64 79 20 61 74 20 74 68 | 65 20 69 6e 73 65 72 74 |dy at th|e insert|
|000048b0| 69 6f 6e 20 70 6f 69 6e | 74 2e 20 20 44 65 6c 65 |ion poin|t. Dele|
|000048c0| 74 65 73 20 74 68 65 20 | 63 75 72 72 65 6e 74 20 |tes the |current |
|000048d0| 73 65 6c 65 63 74 69 6f | 6e 20 0d 23 20 71 75 69 |selectio|n .# qui|
|000048e0| 65 74 6c 79 20 69 66 20 | 74 68 65 20 67 6c 6f 62 |etly if |the glob|
|000048f0| 61 6c 20 76 61 72 69 61 | 62 6c 65 20 27 64 65 6c |al varia|ble 'del|
|00004900| 65 74 65 45 6e 76 4e 6f | 69 73 69 6c 79 27 20 69 |eteEnvNo|isily' i|
|00004910| 73 20 66 61 6c 73 65 3b | 20 0d 23 20 6f 74 68 65 |s false;| .# othe|
|00004920| 72 77 69 73 65 20 74 68 | 65 20 75 73 65 72 20 69 |rwise th|e user i|
|00004930| 73 20 70 72 6f 6d 70 74 | 65 64 20 66 6f 72 20 64 |s prompt|ed for d|
|00004940| 69 72 65 63 74 69 6f 6e | 73 2e 20 20 52 65 74 75 |irection|s. Retu|
|00004950| 72 6e 73 20 74 72 75 65 | 20 69 66 20 74 68 65 20 |rns true| if the |
|00004960| 0d 23 20 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 20 69 |.# envir|onment i|
|00004970| 73 20 75 6c 74 69 6d 61 | 74 65 6c 79 20 69 6e 73 |s ultima|tely ins|
|00004980| 65 72 74 65 64 2c 20 61 | 6e 64 20 66 61 6c 73 65 |erted, a|nd false|
|00004990| 20 69 66 20 74 68 65 20 | 75 73 65 72 20 63 61 6e | if the |user can|
|000049a0| 63 65 6c 73 20 0d 23 20 | 74 68 65 20 6f 70 65 72 |cels .# |the oper|
|000049b0| 61 74 69 6f 6e 2e 0d 70 | 72 6f 63 20 69 6e 73 65 |ation..p|roc inse|
|000049c0| 72 74 45 6e 76 69 72 6f | 6e 6d 65 6e 74 20 7b 65 |rtEnviro|nment {e|
|000049d0| 6e 76 4e 61 6d 65 20 65 | 6e 76 41 72 67 20 65 6e |nvName e|nvArg en|
|000049e0| 76 42 6f 64 79 7d 20 7b | 0d 09 67 6c 6f 62 61 6c |vBody} {|..global|
|000049f0| 20 54 65 58 6d 6f 64 65 | 56 61 72 73 0d 09 69 66 | TeXmode|Vars..if|
|00004a00| 20 7b 20 5b 69 73 53 65 | 6c 65 63 74 69 6f 6e 5d | { [isSe|lection]|
|00004a10| 20 7d 20 74 68 65 6e 20 | 7b 0d 09 09 69 66 20 7b | } then |{...if {|
|00004a20| 20 24 54 65 58 6d 6f 64 | 65 56 61 72 73 28 64 65 | $TeXmod|eVars(de|
|00004a30| 6c 65 74 65 45 6e 76 4e | 6f 69 73 69 6c 79 29 20 |leteEnvN|oisily) |
|00004a40| 7d 20 74 68 65 6e 20 7b | 0d 09 09 09 73 77 69 74 |} then {|....swit|
|00004a50| 63 68 20 5b 61 73 6b 79 | 65 73 6e 6f 20 2d 63 20 |ch [asky|esno -c |
|00004a60| 22 44 65 6c 65 74 65 20 | 73 65 6c 65 63 74 69 6f |"Delete |selectio|
|00004a70| 6e 3f 22 5d 20 7b 0d 09 | 09 09 09 22 79 65 73 22 |n?"] {..|..."yes"|
|00004a80| 20 7b 7d 0d 09 09 09 09 | 22 6e 6f 22 20 7b 62 61 | {}.....|"no" {ba|
|00004a90| 63 6b 77 61 72 64 43 68 | 61 72 7d 0d 09 09 09 09 |ckwardCh|ar}.....|
|00004aa0| 22 63 61 6e 63 65 6c 22 | 20 7b 72 65 74 75 72 6e |"cancel"| {return|
|00004ab0| 20 30 7d 0d 09 09 09 7d | 0d 09 09 7d 0d 09 7d 0d | 0}....}|...}..}.|
|00004ac0| 09 61 70 70 65 6e 64 20 | 62 65 67 53 74 72 75 63 |.append |begStruc|
|00004ad0| 74 20 22 5c 5c 62 65 67 | 69 6e 7b 22 20 24 65 6e |t "\\beg|in{" $en|
|00004ae0| 76 4e 61 6d 65 20 22 7d | 22 20 24 65 6e 76 41 72 |vName "}|" $envAr|
|00004af0| 67 0d 09 61 70 70 65 6e | 64 20 65 6e 64 53 74 72 |g..appen|d endStr|
|00004b00| 75 63 74 20 22 5c 5c 65 | 6e 64 7b 22 20 24 65 6e |uct "\\e|nd{" $en|
|00004b10| 76 4e 61 6d 65 20 22 7d | a5 22 0d 09 69 6e 73 65 |vName "}|."..inse|
|00004b20| 72 74 53 74 72 75 63 74 | 75 72 65 20 24 62 65 67 |rtStruct|ure $beg|
|00004b30| 53 74 72 75 63 74 20 24 | 65 6e 76 42 6f 64 79 20 |Struct $|envBody |
|00004b40| 24 65 6e 64 53 74 72 75 | 63 74 0d 09 72 65 74 75 |$endStru|ct..retu|
|00004b50| 72 6e 20 31 0d 7d 0d 23 | 20 49 6e 73 65 72 74 73 |rn 1.}.#| Inserts|
|00004b60| 20 61 20 73 74 72 75 63 | 74 75 72 65 20 61 74 20 | a struc|ture at |
|00004b70| 74 68 65 20 69 6e 73 65 | 72 74 69 6f 6e 20 70 6f |the inse|rtion po|
|00004b80| 69 6e 74 2e 20 20 50 6f | 73 69 74 69 6f 6e 73 20 |int. Po|sitions |
|00004b90| 74 68 65 20 63 75 72 73 | 6f 72 20 0d 23 20 61 74 |the curs|or .# at|
|00004ba0| 20 74 68 65 20 62 65 67 | 69 6e 6e 69 6e 67 20 6f | the beg|inning o|
|00004bb0| 66 20 74 68 65 20 73 74 | 72 75 63 74 75 72 65 2c |f the st|ructure,|
|00004bc0| 20 6c 65 61 76 69 6e 67 | 20 61 6e 79 20 73 75 62 | leaving| any sub|
|00004bd0| 73 65 71 75 65 6e 74 20 | 61 63 74 69 6f 6e 20 0d |sequent |action .|
|00004be0| 23 20 74 6f 20 74 68 65 | 20 63 61 6c 6c 69 6e 67 |# to the| calling|
|00004bf0| 20 70 72 6f 63 65 64 75 | 72 65 2e 20 20 44 65 6c | procedu|re. Del|
|00004c00| 65 74 65 73 20 74 68 65 | 20 63 75 72 72 65 6e 74 |etes the| current|
|00004c10| 20 73 65 6c 65 63 74 69 | 6f 6e 20 71 75 69 65 74 | selecti|on quiet|
|00004c20| 6c 79 2e 0d 70 72 6f 63 | 20 69 6e 73 65 72 74 53 |ly..proc| insertS|
|00004c30| 74 72 75 63 74 75 72 65 | 20 7b 62 65 67 53 74 72 |tructure| {begStr|
|00004c40| 75 63 74 20 62 6f 64 79 | 53 74 72 75 63 74 20 65 |uct body|Struct e|
|00004c50| 6e 64 53 74 72 75 63 74 | 7d 20 7b 0d 09 73 65 74 |ndStruct|} {..set|
|00004c60| 20 73 74 61 72 74 20 5b | 67 65 74 50 6f 73 5d 0d | start [|getPos].|
|00004c70| 09 73 65 74 20 65 6e 64 | 20 5b 73 65 6c 45 6e 64 |.set end| [selEnd|
|00004c80| 5d 0d 09 73 65 74 20 62 | 6f 64 79 20 5b 73 68 69 |]..set b|ody [shi|
|00004c90| 66 74 54 65 78 74 52 69 | 67 68 74 20 24 62 6f 64 |ftTextRi|ght $bod|
|00004ca0| 79 53 74 72 75 63 74 20 | 5b 67 65 74 49 6e 64 65 |yStruct |[getInde|
|00004cb0| 6e 74 61 74 69 6f 6e 20 | 24 73 74 61 72 74 5d 5d |ntation |$start]]|
|00004cc0| 0d 09 72 65 70 6c 61 63 | 65 54 65 78 74 20 24 73 |..replac|eText $s|
|00004cd0| 74 61 72 74 20 24 65 6e | 64 20 5b 62 75 69 6c 64 |tart $en|d [build|
|00004ce0| 53 74 72 75 63 74 75 72 | 65 20 24 62 65 67 53 74 |Structur|e $begSt|
|00004cf0| 72 75 63 74 20 24 62 6f | 64 79 20 24 65 6e 64 53 |ruct $bo|dy $endS|
|00004d00| 74 72 75 63 74 5d 0d 09 | 67 6f 74 6f 20 24 73 74 |truct]..|goto $st|
|00004d10| 61 72 74 0d 7d 0d 0d 23 | 20 49 6e 73 65 72 74 73 |art.}..#| Inserts|
|00004d20| 20 61 6e 20 65 6e 76 69 | 72 6f 6e 6d 65 6e 74 20 | an envi|ronment |
|00004d30| 77 69 74 68 20 74 68 65 | 20 67 69 76 65 6e 20 6e |with the| given n|
|00004d40| 61 6d 65 2c 20 61 72 67 | 75 6d 65 6e 74 2c 20 61 |ame, arg|ument, a|
|00004d50| 6e 64 20 62 6f 64 79 20 | 61 74 20 0d 23 20 74 68 |nd body |at .# th|
|00004d60| 65 20 69 6e 73 65 72 74 | 69 6f 6e 20 70 6f 69 6e |e insert|ion poin|
|00004d70| 74 2e 20 20 50 6f 73 69 | 74 69 6f 6e 73 20 74 68 |t. Posi|tions th|
|00004d80| 65 20 63 75 72 73 6f 72 | 20 61 74 20 74 68 65 20 |e cursor| at the |
|00004d90| 62 65 67 69 6e 6e 69 6e | 67 20 6f 66 20 0d 23 20 |beginnin|g of .# |
|00004da0| 74 68 65 20 65 6e 76 69 | 72 6f 6e 6d 65 6e 74 2c |the envi|ronment,|
|00004db0| 20 6c 65 61 76 69 6e 67 | 20 61 6e 79 20 73 75 62 | leaving| any sub|
|00004dc0| 73 65 71 75 65 6e 74 20 | 61 63 74 69 6f 6e 20 74 |sequent |action t|
|00004dd0| 6f 20 74 68 65 20 63 61 | 6c 6c 69 6e 67 20 0d 23 |o the ca|lling .#|
|00004de0| 20 70 72 6f 63 65 64 75 | 72 65 2e 20 20 49 66 20 | procedu|re. If |
|00004df0| 74 68 65 72 65 20 69 73 | 20 63 75 72 72 65 6e 74 |there is| current|
|00004e00| 6c 79 20 61 20 73 65 6c | 65 63 74 69 6f 6e 2c 20 |ly a sel|ection, |
|00004e10| 63 75 74 20 61 6e 64 20 | 70 61 73 74 65 20 69 74 |cut and |paste it|
|00004e20| 20 0d 23 20 69 6e 74 6f | 20 74 68 65 20 62 6f 64 | .# into| the bod|
|00004e30| 79 20 6f 66 20 74 68 65 | 20 6e 65 77 20 65 6e 76 |y of the| new env|
|00004e40| 69 72 6f 6e 6d 65 6e 74 | 2c 20 6d 61 69 6e 74 61 |ironment|, mainta|
|00004e50| 69 6e 69 6e 67 20 70 72 | 6f 70 65 72 20 0d 23 20 |ining pr|oper .# |
|00004e60| 69 6e 64 65 6e 74 61 74 | 69 6f 6e 3b 20 6f 74 68 |indentat|ion; oth|
|00004e70| 65 72 77 69 73 65 2c 20 | 69 6e 73 65 72 74 20 61 |erwise, |insert a|
|00004e80| 20 74 61 62 20 73 74 6f | 70 20 69 6e 74 6f 20 74 | tab sto|p into t|
|00004e90| 68 65 20 62 6f 64 79 20 | 6f 66 20 74 68 65 0d 23 |he body |of the.#|
|00004ea0| 20 65 6e 76 69 72 6f 6e | 6d 65 6e 74 2e 20 20 52 | environ|ment. R|
|00004eb0| 65 74 75 72 6e 73 20 74 | 72 75 65 20 69 66 20 74 |eturns t|rue if t|
|00004ec0| 68 65 72 65 20 69 73 20 | 61 20 73 65 6c 65 63 74 |here is |a select|
|00004ed0| 69 6f 6e 2c 20 61 6e 64 | 20 66 61 6c 73 65 20 0d |ion, and| false .|
|00004ee0| 23 20 6f 74 68 65 72 77 | 69 73 65 2e 0d 23 20 70 |# otherw|ise..# p|
|00004ef0| 72 6f 63 20 77 72 61 70 | 45 6e 76 69 72 6f 6e 6d |roc wrap|Environm|
|00004f00| 65 6e 74 20 7b 65 6e 76 | 4e 61 6d 65 20 65 6e 76 |ent {env|Name env|
|00004f10| 41 72 67 20 65 6e 76 42 | 6f 64 79 7d 20 7b 0d 23 |Arg envB|ody} {.#|
|00004f20| 20 09 73 65 74 20 73 74 | 61 72 74 20 5b 67 65 74 | .set st|art [get|
|00004f30| 50 6f 73 5d 0d 23 20 09 | 73 65 74 20 65 6e 64 20 |Pos].# .|set end |
|00004f40| 5b 73 65 6c 45 6e 64 5d | 0d 23 20 09 73 65 74 20 |[selEnd]|.# .set |
|00004f50| 69 6e 64 65 6e 74 20 5b | 67 65 74 49 6e 64 65 6e |indent [|getInden|
|00004f60| 74 61 74 69 6f 6e 20 24 | 73 74 61 72 74 5d 0d 23 |tation $|start].#|
|00004f70| 20 09 69 66 20 7b 5b 69 | 73 53 65 6c 65 63 74 69 | .if {[i|sSelecti|
|00004f80| 6f 6e 5d 7d 20 74 68 65 | 6e 20 7b 0d 23 20 09 09 |on]} the|n {.# ..|
|00004f90| 73 65 74 20 74 65 78 74 | 20 5b 67 65 74 53 65 6c |set text| [getSel|
|00004fa0| 65 63 74 5d 0d 23 20 09 | 09 73 65 74 20 74 65 78 |ect].# .|.set tex|
|00004fb0| 74 4c 65 6e 20 5b 73 74 | 72 69 6e 67 20 6c 65 6e |tLen [st|ring len|
|00004fc0| 67 74 68 20 24 74 65 78 | 74 5d 0d 23 20 09 09 69 |gth $tex|t].# ..i|
|00004fd0| 66 20 7b 5b 73 74 72 69 | 6e 67 20 69 6e 64 65 78 |f {[stri|ng index|
|00004fe0| 20 24 74 65 78 74 20 5b | 65 78 70 72 20 24 74 65 | $text [|expr $te|
|00004ff0| 78 74 4c 65 6e 2d 31 5d | 5d 20 21 3d 20 22 5c 72 |xtLen-1]|] != "\r|
|00005000| 22 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 09 61 |"} then |{.# ...a|
|00005010| 70 70 65 6e 64 20 74 65 | 78 74 20 22 5c 72 22 0d |ppend te|xt "\r".|
|00005020| 23 20 09 09 7d 0d 23 20 | 09 09 69 66 20 7b 24 73 |# ..}.# |..if {$s|
|00005030| 74 61 72 74 20 3d 3d 20 | 5b 6c 69 6e 65 53 74 61 |tart == |[lineSta|
|00005040| 72 74 20 24 73 74 61 72 | 74 5d 7d 20 74 68 65 6e |rt $star|t]} then|
|00005050| 20 7b 0d 23 20 09 09 09 | 73 65 74 20 62 6f 64 79 | {.# ...|set body|
|00005060| 20 5b 73 68 69 66 74 54 | 65 78 74 52 69 67 68 74 | [shiftT|extRight|
|00005070| 20 24 74 65 78 74 20 5c | 74 5d 0d 23 20 09 09 7d | $text \|t].# ..}|
|00005080| 20 65 6c 73 65 20 7b 0d | 23 20 09 09 09 73 65 74 | else {.|# ...set|
|00005090| 20 62 6f 64 79 20 22 24 | 69 6e 64 65 6e 74 5b 73 | body "$|indent[s|
|000050a0| 68 69 66 74 54 65 78 74 | 52 69 67 68 74 20 24 74 |hiftText|Right $t|
|000050b0| 65 78 74 20 5c 74 5d 22 | 0d 23 20 09 09 7d 0d 23 |ext \t]"|.# ..}.#|
|000050c0| 20 09 09 61 70 70 65 6e | 64 20 62 6f 64 79 20 5b | ..appen|d body [|
|000050d0| 73 68 69 66 74 54 65 78 | 74 52 69 67 68 74 20 24 |shiftTex|tRight $|
|000050e0| 65 6e 76 42 6f 64 79 20 | 24 69 6e 64 65 6e 74 5d |envBody |$indent]|
|000050f0| 0d 23 20 09 09 73 65 74 | 20 65 6e 76 69 72 6f 6e |.# ..set| environ|
|00005100| 6d 65 6e 74 20 5b 62 75 | 69 6c 64 45 6e 76 69 72 |ment [bu|ildEnvir|
|00005110| 6f 6e 6d 65 6e 74 20 24 | 65 6e 76 4e 61 6d 65 20 |onment $|envName |
|00005120| 24 65 6e 76 41 72 67 20 | 24 62 6f 64 79 20 22 a5 |$envArg |$body ".|
|00005130| 22 5d 0d 23 20 09 09 73 | 65 74 20 72 65 74 75 72 |"].# ..s|et retur|
|00005140| 6e 46 6c 61 67 20 31 0d | 23 20 09 7d 20 65 6c 73 |nFlag 1.|# .} els|
|00005150| 65 20 7b 0d 23 20 09 09 | 61 70 70 65 6e 64 20 62 |e {.# ..|append b|
|00005160| 6f 64 79 20 22 24 69 6e | 64 65 6e 74 5c 74 a5 5c |ody "$in|dent\t.\|
|00005170| 72 22 20 5b 73 68 69 66 | 74 54 65 78 74 52 69 67 |r" [shif|tTextRig|
|00005180| 68 74 20 24 65 6e 76 42 | 6f 64 79 20 24 69 6e 64 |ht $envB|ody $ind|
|00005190| 65 6e 74 5d 0d 23 20 09 | 09 73 65 74 20 65 6e 76 |ent].# .|.set env|
|000051a0| 69 72 6f 6e 6d 65 6e 74 | 20 5b 62 75 69 6c 64 45 |ironment| [buildE|
|000051b0| 6e 76 69 72 6f 6e 6d 65 | 6e 74 20 24 65 6e 76 4e |nvironme|nt $envN|
|000051c0| 61 6d 65 20 24 65 6e 76 | 41 72 67 20 24 62 6f 64 |ame $env|Arg $bod|
|000051d0| 79 20 22 a5 22 5d 0d 23 | 20 09 09 73 65 74 20 72 |y "."].#| ..set r|
|000051e0| 65 74 75 72 6e 46 6c 61 | 67 20 30 0d 23 20 09 7d |eturnFla|g 0.# .}|
|000051f0| 0d 23 20 09 72 65 70 6c | 61 63 65 54 65 78 74 20 |.# .repl|aceText |
|00005200| 24 73 74 61 72 74 20 24 | 65 6e 64 20 24 65 6e 76 |$start $|end $env|
|00005210| 69 72 6f 6e 6d 65 6e 74 | 0d 23 20 09 67 6f 74 6f |ironment|.# .goto|
|00005220| 20 24 73 74 61 72 74 0d | 23 20 09 72 65 74 75 72 | $start.|# .retur|
|00005230| 6e 20 24 72 65 74 75 72 | 6e 46 6c 61 67 0d 23 20 |n $retur|nFlag.# |
|00005240| 7d 0d 0d 23 20 49 6e 73 | 65 72 74 73 20 61 6e 20 |}..# Ins|erts an |
|00005250| 65 6e 76 69 72 6f 6e 6d | 65 6e 74 20 77 69 74 68 |environm|ent with|
|00005260| 20 74 68 65 20 67 69 76 | 65 6e 20 6e 61 6d 65 2c | the giv|en name,|
|00005270| 20 61 72 67 75 6d 65 6e | 74 2c 20 61 6e 64 20 62 | argumen|t, and b|
|00005280| 6f 64 79 20 61 74 20 0d | 23 20 74 68 65 20 69 6e |ody at .|# the in|
|00005290| 73 65 72 74 69 6f 6e 20 | 70 6f 69 6e 74 2e 20 20 |sertion |point. |
|000052a0| 49 66 20 74 68 65 72 65 | 20 69 73 20 63 75 72 72 |If there| is curr|
|000052b0| 65 6e 74 6c 79 20 61 20 | 73 65 6c 65 63 74 69 6f |ently a |selectio|
|000052c0| 6e 2c 20 63 75 74 20 61 | 6e 64 20 0d 23 20 70 61 |n, cut a|nd .# pa|
|000052d0| 73 74 65 20 69 74 20 69 | 6e 74 6f 20 74 68 65 20 |ste it i|nto the |
|000052e0| 62 6f 64 79 20 6f 66 20 | 74 68 65 20 6e 65 77 20 |body of |the new |
|000052f0| 65 6e 76 69 72 6f 6e 6d | 65 6e 74 2c 20 6d 61 69 |environm|ent, mai|
|00005300| 6e 74 61 69 6e 69 6e 67 | 20 70 72 6f 70 65 72 20 |ntaining| proper |
|00005310| 0d 23 20 69 6e 64 65 6e | 74 61 74 69 6f 6e 3b 20 |.# inden|tation; |
|00005320| 6f 74 68 65 72 77 69 73 | 65 2c 20 69 6e 73 65 72 |otherwis|e, inser|
|00005330| 74 20 61 20 74 61 62 20 | 73 74 6f 70 20 69 6e 74 |t a tab |stop int|
|00005340| 6f 20 74 68 65 20 62 6f | 64 79 20 6f 66 20 74 68 |o the bo|dy of th|
|00005350| 65 0d 23 20 65 6e 76 69 | 72 6f 6e 6d 65 6e 74 2e |e.# envi|ronment.|
|00005360| 20 20 52 65 74 75 72 6e | 73 20 74 72 75 65 20 69 | Return|s true i|
|00005370| 66 20 74 68 65 72 65 20 | 69 73 20 61 20 73 65 6c |f there |is a sel|
|00005380| 65 63 74 69 6f 6e 2c 20 | 61 6e 64 20 66 61 6c 73 |ection, |and fals|
|00005390| 65 20 0d 23 20 6f 74 68 | 65 72 77 69 73 65 2e 0d |e .# oth|erwise..|
|000053a0| 70 72 6f 63 20 77 72 61 | 70 45 6e 76 69 72 6f 6e |proc wra|pEnviron|
|000053b0| 6d 65 6e 74 20 7b 65 6e | 76 4e 61 6d 65 20 65 6e |ment {en|vName en|
|000053c0| 76 41 72 67 20 65 6e 76 | 42 6f 64 79 7d 20 7b 0d |vArg env|Body} {.|
|000053d0| 09 61 70 70 65 6e 64 20 | 62 65 67 53 74 72 75 63 |.append |begStruc|
|000053e0| 74 20 22 5c 5c 62 65 67 | 69 6e 7b 22 20 24 65 6e |t "\\beg|in{" $en|
|000053f0| 76 4e 61 6d 65 20 22 7d | 22 20 24 65 6e 76 41 72 |vName "}|" $envAr|
|00005400| 67 0d 09 61 70 70 65 6e | 64 20 65 6e 64 53 74 72 |g..appen|d endStr|
|00005410| 75 63 74 20 22 5c 5c 65 | 6e 64 7b 22 20 24 65 6e |uct "\\e|nd{" $en|
|00005420| 76 4e 61 6d 65 20 22 7d | a5 22 0d 09 72 65 74 75 |vName "}|."..retu|
|00005430| 72 6e 20 5b 77 72 61 70 | 53 74 72 75 63 74 75 72 |rn [wrap|Structur|
|00005440| 65 20 24 62 65 67 53 74 | 72 75 63 74 20 24 65 6e |e $begSt|ruct $en|
|00005450| 76 42 6f 64 79 20 24 65 | 6e 64 53 74 72 75 63 74 |vBody $e|ndStruct|
|00005460| 5d 0d 7d 0d 23 20 49 6e | 73 65 72 74 73 20 61 20 |].}.# In|serts a |
|00005470| 73 74 72 75 63 74 75 72 | 65 20 61 74 20 74 68 65 |structur|e at the|
|00005480| 20 69 6e 73 65 72 74 69 | 6f 6e 20 70 6f 69 6e 74 | inserti|on point|
|00005490| 2e 20 20 50 6f 73 69 74 | 69 6f 6e 73 20 74 68 65 |. Posit|ions the|
|000054a0| 20 63 75 72 73 6f 72 20 | 0d 23 20 61 74 20 74 68 | cursor |.# at th|
|000054b0| 65 20 62 65 67 69 6e 6e | 69 6e 67 20 6f 66 20 74 |e beginn|ing of t|
|000054c0| 68 65 20 73 74 72 75 63 | 74 75 72 65 2c 20 6c 65 |he struc|ture, le|
|000054d0| 61 76 69 6e 67 20 61 6e | 79 20 73 75 62 73 65 71 |aving an|y subseq|
|000054e0| 75 65 6e 74 20 61 63 74 | 69 6f 6e 20 0d 23 20 74 |uent act|ion .# t|
|000054f0| 6f 20 74 68 65 20 63 61 | 6c 6c 69 6e 67 20 70 72 |o the ca|lling pr|
|00005500| 6f 63 65 64 75 72 65 2e | 20 20 49 66 20 74 68 65 |ocedure.| If the|
|00005510| 72 65 20 69 73 20 63 75 | 72 72 65 6e 74 6c 79 20 |re is cu|rrently |
|00005520| 61 20 73 65 6c 65 63 74 | 69 6f 6e 2c 20 63 75 74 |a select|ion, cut|
|00005530| 20 0d 23 20 61 6e 64 20 | 70 61 73 74 65 20 69 74 | .# and |paste it|
|00005540| 20 69 6e 74 6f 20 74 68 | 65 20 62 6f 64 79 20 6f | into th|e body o|
|00005550| 66 20 74 68 65 20 6e 65 | 77 20 65 6e 76 69 72 6f |f the ne|w enviro|
|00005560| 6e 6d 65 6e 74 2c 20 6d | 61 69 6e 74 61 69 6e 69 |nment, m|aintaini|
|00005570| 6e 67 20 70 72 6f 70 65 | 72 20 0d 23 20 69 6e 64 |ng prope|r .# ind|
|00005580| 65 6e 74 61 74 69 6f 6e | 3b 20 6f 74 68 65 72 77 |entation|; otherw|
|00005590| 69 73 65 2c 20 69 6e 73 | 65 72 74 20 61 20 74 61 |ise, ins|ert a ta|
|000055a0| 62 20 73 74 6f 70 20 69 | 6e 74 6f 20 74 68 65 20 |b stop i|nto the |
|000055b0| 62 6f 64 79 20 6f 66 20 | 74 68 65 0d 23 20 65 6e |body of |the.# en|
|000055c0| 76 69 72 6f 6e 6d 65 6e | 74 2e 20 20 52 65 74 75 |vironmen|t. Retu|
|000055d0| 72 6e 73 20 74 72 75 65 | 20 69 66 20 74 68 65 72 |rns true| if ther|
|000055e0| 65 20 69 73 20 61 20 73 | 65 6c 65 63 74 69 6f 6e |e is a s|election|
|000055f0| 2c 20 61 6e 64 20 66 61 | 6c 73 65 20 0d 23 20 6f |, and fa|lse .# o|
|00005600| 74 68 65 72 77 69 73 65 | 2e 0d 70 72 6f 63 20 77 |therwise|..proc w|
|00005610| 72 61 70 53 74 72 75 63 | 74 75 72 65 20 7b 62 65 |rapStruc|ture {be|
|00005620| 67 53 74 72 75 63 74 20 | 62 6f 64 79 53 74 72 75 |gStruct |bodyStru|
|00005630| 63 74 20 65 6e 64 53 74 | 72 75 63 74 7d 20 7b 0d |ct endSt|ruct} {.|
|00005640| 09 73 65 74 20 73 74 61 | 72 74 20 5b 67 65 74 50 |.set sta|rt [getP|
|00005650| 6f 73 5d 0d 09 73 65 74 | 20 65 6e 64 20 5b 73 65 |os]..set| end [se|
|00005660| 6c 45 6e 64 5d 0d 09 73 | 65 74 20 69 6e 64 65 6e |lEnd]..s|et inden|
|00005670| 74 20 5b 67 65 74 49 6e | 64 65 6e 74 61 74 69 6f |t [getIn|dentatio|
|00005680| 6e 20 24 73 74 61 72 74 | 5d 0d 09 69 66 20 7b 20 |n $start|]..if { |
|00005690| 5b 69 73 53 65 6c 65 63 | 74 69 6f 6e 5d 20 7d 20 |[isSelec|tion] } |
|000056a0| 74 68 65 6e 20 7b 0d 09 | 09 73 65 74 20 74 65 78 |then {..|.set tex|
|000056b0| 74 20 5b 67 65 74 53 65 | 6c 65 63 74 5d 0d 09 09 |t [getSe|lect]...|
|000056c0| 73 65 74 20 74 65 78 74 | 4c 65 6e 20 5b 73 74 72 |set text|Len [str|
|000056d0| 69 6e 67 20 6c 65 6e 67 | 74 68 20 24 74 65 78 74 |ing leng|th $text|
|000056e0| 5d 0d 09 09 69 66 20 7b | 20 5b 73 74 72 69 6e 67 |]...if {| [string|
|000056f0| 20 69 6e 64 65 78 20 24 | 74 65 78 74 20 5b 65 78 | index $|text [ex|
|00005700| 70 72 20 24 74 65 78 74 | 4c 65 6e 2d 31 5d 5d 20 |pr $text|Len-1]] |
|00005710| 21 3d 20 22 5c 72 22 20 | 7d 20 74 68 65 6e 20 7b |!= "\r" |} then {|
|00005720| 0d 09 09 09 61 70 70 65 | 6e 64 20 74 65 78 74 20 |....appe|nd text |
|00005730| 22 5c 72 22 0d 09 09 7d | 0d 09 09 69 66 20 7b 24 |"\r"...}|...if {$|
|00005740| 73 74 61 72 74 20 3d 3d | 20 5b 6c 69 6e 65 53 74 |start ==| [lineSt|
|00005750| 61 72 74 20 24 73 74 61 | 72 74 5d 7d 20 74 68 65 |art $sta|rt]} the|
|00005760| 6e 20 7b 0d 09 09 09 73 | 65 74 20 62 6f 64 79 20 |n {....s|et body |
|00005770| 5b 73 68 69 66 74 54 65 | 78 74 52 69 67 68 74 20 |[shiftTe|xtRight |
|00005780| 24 74 65 78 74 20 5c 74 | 5d 0d 09 09 7d 20 65 6c |$text \t|]...} el|
|00005790| 73 65 20 7b 0d 09 09 09 | 73 65 74 20 62 6f 64 79 |se {....|set body|
|000057a0| 20 22 24 69 6e 64 65 6e | 74 5b 73 68 69 66 74 54 | "$inden|t[shiftT|
|000057b0| 65 78 74 52 69 67 68 74 | 20 24 74 65 78 74 20 5c |extRight| $text \|
|000057c0| 74 5d 22 0d 09 09 7d 0d | 09 09 61 70 70 65 6e 64 |t]"...}.|..append|
|000057d0| 20 62 6f 64 79 20 5b 73 | 68 69 66 74 54 65 78 74 | body [s|hiftText|
|000057e0| 52 69 67 68 74 20 24 62 | 6f 64 79 53 74 72 75 63 |Right $b|odyStruc|
|000057f0| 74 20 24 69 6e 64 65 6e | 74 5d 0d 09 09 73 65 74 |t $inden|t]...set|
|00005800| 20 72 65 74 75 72 6e 46 | 6c 61 67 20 31 0d 09 7d | returnF|lag 1..}|
|00005810| 20 65 6c 73 65 20 7b 0d | 09 09 61 70 70 65 6e 64 | else {.|..append|
|00005820| 20 62 6f 64 79 20 22 24 | 69 6e 64 65 6e 74 5c 74 | body "$|indent\t|
|00005830| a5 5c 72 22 20 5b 73 68 | 69 66 74 54 65 78 74 52 |.\r" [sh|iftTextR|
|00005840| 69 67 68 74 20 24 62 6f | 64 79 53 74 72 75 63 74 |ight $bo|dyStruct|
|00005850| 20 24 69 6e 64 65 6e 74 | 5d 0d 09 09 73 65 74 20 | $indent|]...set |
|00005860| 72 65 74 75 72 6e 46 6c | 61 67 20 30 0d 09 7d 0d |returnFl|ag 0..}.|
|00005870| 09 72 65 70 6c 61 63 65 | 54 65 78 74 20 24 73 74 |.replace|Text $st|
|00005880| 61 72 74 20 24 65 6e 64 | 20 5b 62 75 69 6c 64 53 |art $end| [buildS|
|00005890| 74 72 75 63 74 75 72 65 | 20 24 62 65 67 53 74 72 |tructure| $begStr|
|000058a0| 75 63 74 20 24 62 6f 64 | 79 20 24 65 6e 64 53 74 |uct $bod|y $endSt|
|000058b0| 72 75 63 74 5d 0d 09 67 | 6f 74 6f 20 24 73 74 61 |ruct]..g|oto $sta|
|000058c0| 72 74 0d 09 72 65 74 75 | 72 6e 20 24 72 65 74 75 |rt..retu|rn $retu|
|000058d0| 72 6e 46 6c 61 67 0d 7d | 0d 0d 23 20 41 20 67 65 |rnFlag.}|..# A ge|
|000058e0| 6e 65 72 69 63 20 63 61 | 6c 6c 20 74 6f 20 27 77 |neric ca|ll to 'w|
|000058f0| 72 61 70 45 6e 76 69 72 | 6f 6e 6d 65 6e 74 27 20 |rapEnvir|onment' |
|00005900| 75 73 65 64 20 74 68 72 | 6f 75 67 68 6f 75 74 20 |used thr|oughout |
|00005910| 6c 61 74 65 78 2e 74 63 | 6c 3a 0d 70 72 6f 63 20 |latex.tc|l:.proc |
|00005920| 64 6f 57 72 61 70 45 6e | 76 69 72 6f 6e 6d 65 6e |doWrapEn|vironmen|
|00005930| 74 20 7b 65 6e 76 4e 61 | 6d 65 7d 20 7b 0d 09 69 |t {envNa|me} {..i|
|00005940| 66 20 7b 20 5b 77 72 61 | 70 45 6e 76 69 72 6f 6e |f { [wra|pEnviron|
|00005950| 6d 65 6e 74 20 24 65 6e | 76 4e 61 6d 65 20 22 22 |ment $en|vName ""|
|00005960| 20 22 22 5d 20 7d 20 74 | 68 65 6e 20 7b 0d 09 09 | ""] } t|hen {...|
|00005970| 73 65 74 20 6d 73 67 54 | 65 78 74 20 22 73 65 6c |set msgT|ext "sel|
|00005980| 65 63 74 69 6f 6e 20 77 | 72 61 70 70 65 64 22 0d |ection w|rapped".|
|00005990| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 73 65 74 20 |.} else |{...set |
|000059a0| 6d 73 67 54 65 78 74 20 | 22 65 6e 74 65 72 20 62 |msgText |"enter b|
|000059b0| 6f 64 79 20 6f 66 20 24 | 65 6e 76 4e 61 6d 65 20 |ody of $|envName |
|000059c0| 65 6e 76 69 72 6f 6e 6d | 65 6e 74 22 0d 09 7d 0d |environm|ent"..}.|
|000059d0| 09 6e 65 78 74 54 61 62 | 53 74 6f 70 0d 09 6d 65 |.nextTab|Stop..me|
|000059e0| 73 73 61 67 65 20 24 6d | 73 67 54 65 78 74 0d 7d |ssage $m|sgText.}|
|000059f0| 0d 23 20 41 20 67 65 6e | 65 72 69 63 20 63 61 6c |.# A gen|eric cal|
|00005a00| 6c 20 74 6f 20 27 77 72 | 61 70 53 74 72 75 63 74 |l to 'wr|apStruct|
|00005a10| 75 72 65 27 3a 0d 70 72 | 6f 63 20 64 6f 57 72 61 |ure':.pr|oc doWra|
|00005a20| 70 53 74 72 75 63 74 75 | 72 65 20 7b 62 65 67 53 |pStructu|re {begS|
|00005a30| 74 72 75 63 74 20 62 6f | 64 79 53 74 72 75 63 74 |truct bo|dyStruct|
|00005a40| 20 65 6e 64 53 74 72 75 | 63 74 7d 20 7b 0d 09 69 | endStru|ct} {..i|
|00005a50| 66 20 7b 20 5b 77 72 61 | 70 53 74 72 75 63 74 75 |f { [wra|pStructu|
|00005a60| 72 65 20 24 62 65 67 53 | 74 72 75 63 74 20 24 62 |re $begS|truct $b|
|00005a70| 6f 64 79 53 74 72 75 63 | 74 20 24 65 6e 64 53 74 |odyStruc|t $endSt|
|00005a80| 72 75 63 74 5d 20 7d 20 | 74 68 65 6e 20 7b 0d 09 |ruct] } |then {..|
|00005a90| 09 73 65 74 20 6d 73 67 | 54 65 78 74 20 22 73 65 |.set msg|Text "se|
|00005aa0| 6c 65 63 74 69 6f 6e 20 | 77 72 61 70 70 65 64 22 |lection |wrapped"|
|00005ab0| 0d 09 7d 20 65 6c 73 65 | 20 7b 0d 09 09 73 65 74 |..} else| {...set|
|00005ac0| 20 6d 73 67 54 65 78 74 | 20 22 65 6e 74 65 72 20 | msgText| "enter |
|00005ad0| 62 6f 64 79 20 6f 66 20 | 73 74 72 75 63 74 75 72 |body of |structur|
|00005ae0| 65 22 0d 09 7d 0d 09 6e | 65 78 74 54 61 62 53 74 |e"..}..n|extTabSt|
|00005af0| 6f 70 0d 09 6d 65 73 73 | 61 67 65 20 24 6d 73 67 |op..mess|age $msg|
|00005b00| 54 65 78 74 0d 7d 0d 0d | 23 20 49 6e 73 65 72 74 |Text.}..|# Insert|
|00005b10| 73 20 61 20 73 74 72 75 | 63 74 75 72 65 64 20 64 |s a stru|ctured d|
|00005b20| 6f 63 75 6d 65 6e 74 20 | 74 65 6d 70 6c 61 74 65 |ocument |template|
|00005b30| 20 61 74 20 74 68 65 20 | 69 6e 73 65 72 74 69 6f | at the |insertio|
|00005b40| 6e 20 70 6f 69 6e 74 2e | 20 20 0d 23 20 54 68 72 |n point.| .# Thr|
|00005b50| 65 65 20 61 72 67 75 6d | 65 6e 74 73 20 61 72 65 |ee argum|ents are|
|00005b60| 20 72 65 71 75 69 72 65 | 64 3a 20 20 74 68 65 20 | require|d: the |
|00005b70| 63 6c 61 73 73 20 6e 61 | 6d 65 20 6f 66 20 74 68 |class na|me of th|
|00005b80| 65 20 64 6f 63 75 6d 65 | 6e 74 2c 20 61 20 0d 23 |e docume|nt, a .#|
|00005b90| 20 70 72 65 61 6d 62 6c | 65 20 73 74 72 69 6e 67 | preambl|e string|
|00005ba0| 2c 20 61 6e 64 20 61 20 | 73 74 72 69 6e 67 20 63 |, and a |string c|
|00005bb0| 6f 6e 74 61 69 6e 69 6e | 67 20 74 68 65 20 62 6f |ontainin|g the bo|
|00005bc0| 64 79 20 6f 66 20 74 68 | 65 20 64 6f 63 75 6d 65 |dy of th|e docume|
|00005bd0| 6e 74 2e 20 20 0d 23 20 | 49 66 20 74 68 65 20 70 |nt. .# |If the p|
|00005be0| 72 65 61 6d 62 6c 65 20 | 69 73 20 6e 75 6c 6c 2c |reamble |is null,|
|00005bf0| 20 61 20 67 65 6e 65 72 | 69 63 20 5c 75 73 65 70 | a gener|ic \usep|
|00005c00| 61 63 6b 61 67 65 20 73 | 74 61 74 65 6d 65 6e 74 |ackage s|tatement|
|00005c10| 20 69 73 20 0d 23 20 69 | 6e 73 65 72 74 65 64 3b | is .# i|nserted;|
|00005c20| 20 6f 74 68 65 72 77 69 | 73 65 2c 20 74 68 65 20 | otherwi|se, the |
|00005c30| 70 72 65 61 6d 62 6c 65 | 20 69 73 20 69 6e 73 65 |preamble| is inse|
|00005c40| 72 74 65 64 20 61 73 20 | 69 73 2e 20 20 54 68 69 |rted as |is. Thi|
|00005c50| 73 20 72 6f 75 74 69 6e | 65 20 0d 23 20 64 6f 65 |s routin|e .# doe|
|00005c60| 73 20 61 62 73 6f 6c 75 | 74 65 6c 79 20 6e 6f 20 |s absolu|tely no |
|00005c70| 65 72 72 6f 72 2d 63 68 | 65 63 6b 69 6e 67 20 28 |error-ch|ecking (|
|00005c80| 74 68 69 73 20 69 73 20 | 74 6f 74 61 6c 6c 79 20 |this is |totally |
|00005c90| 6c 65 66 74 20 75 70 20 | 74 6f 20 74 68 65 20 0d |left up |to the .|
|00005ca0| 23 20 63 61 6c 6c 69 6e | 67 20 70 72 6f 63 65 64 |# callin|g proced|
|00005cb0| 75 72 65 29 20 61 6e 64 | 20 72 65 74 75 72 6e 73 |ure) and| returns|
|00005cc0| 20 6e 6f 74 68 69 6e 67 | 2e 0d 70 72 6f 63 20 69 | nothing|..proc i|
|00005cd0| 6e 73 65 72 74 44 6f 63 | 75 6d 65 6e 74 20 7b 63 |nsertDoc|ument {c|
|00005ce0| 6c 61 73 73 4e 61 6d 65 | 20 70 72 65 61 6d 62 6c |lassName| preambl|
|00005cf0| 65 20 64 6f 63 42 6f 64 | 79 7d 20 7b 0d 09 73 65 |e docBod|y} {..se|
|00005d00| 74 20 64 6f 63 53 74 72 | 20 22 5c 5c 64 6f 63 75 |t docStr| "\\docu|
|00005d10| 6d 65 6e 74 63 6c 61 73 | 73 5c 5b a5 5c 5d 7b 24 |mentclas|s\[.\]{$|
|00005d20| 63 6c 61 73 73 4e 61 6d | 65 7d 5c 72 22 0d 09 69 |classNam|e}\r"..i|
|00005d30| 66 20 7b 24 70 72 65 61 | 6d 62 6c 65 20 3d 3d 20 |f {$prea|mble == |
|00005d40| 22 22 7d 20 74 68 65 6e | 20 7b 0d 09 09 61 70 70 |""} then| {...app|
|00005d50| 65 6e 64 20 64 6f 63 53 | 74 72 20 22 5c 5c 75 73 |end docS|tr "\\us|
|00005d60| 65 70 61 63 6b 61 67 65 | 5c 5b a5 5c 5d 7b a5 7d |epackage|\[.\]{.}|
|00005d70| 5c 72 5c 72 a5 5c 72 5c | 72 22 0d 09 7d 20 65 6c |\r\r.\r\|r"..} el|
|00005d80| 73 65 20 7b 0d 09 09 61 | 70 70 65 6e 64 20 64 6f |se {...a|ppend do|
|00005d90| 63 53 74 72 20 24 70 72 | 65 61 6d 62 6c 65 0d 09 |cStr $pr|eamble..|
|00005da0| 7d 0d 09 61 70 70 65 6e | 64 20 64 6f 63 53 74 72 |}..appen|d docStr|
|00005db0| 20 5b 62 75 69 6c 64 45 | 6e 76 69 72 6f 6e 6d 65 | [buildE|nvironme|
|00005dc0| 6e 74 20 22 64 6f 63 75 | 6d 65 6e 74 22 20 22 22 |nt "docu|ment" ""|
|00005dd0| 20 24 64 6f 63 42 6f 64 | 79 20 22 5c 72 22 5d 0d | $docBod|y "\r"].|
|00005de0| 09 73 65 74 20 73 74 61 | 72 74 20 5b 67 65 74 50 |.set sta|rt [getP|
|00005df0| 6f 73 5d 0d 09 73 65 74 | 20 65 6e 64 20 5b 73 65 |os]..set| end [se|
|00005e00| 6c 45 6e 64 5d 0d 09 72 | 65 70 6c 61 63 65 54 65 |lEnd]..r|eplaceTe|
|00005e10| 78 74 20 24 73 74 61 72 | 74 20 24 65 6e 64 20 24 |xt $star|t $end $|
|00005e20| 64 6f 63 53 74 72 0d 09 | 67 6f 74 6f 20 24 73 74 |docStr..|goto $st|
|00005e30| 61 72 74 0d 09 72 65 74 | 75 72 6e 0d 7d 0d 0d 23 |art..ret|urn.}..#|
|00005e40| 20 49 6e 73 65 72 74 73 | 20 61 20 64 6f 63 75 6d | Inserts| a docum|
|00005e50| 65 6e 74 20 74 65 6d 70 | 6c 61 74 65 20 61 74 20 |ent temp|late at |
|00005e60| 74 68 65 20 69 6e 73 65 | 72 74 69 6f 6e 20 70 6f |the inse|rtion po|
|00005e70| 69 6e 74 20 67 69 76 65 | 6e 20 74 68 65 20 0d 23 |int give|n the .#|
|00005e80| 20 63 6c 61 73 73 20 6e | 61 6d 65 20 6f 66 20 74 | class n|ame of t|
|00005e90| 68 65 20 64 6f 63 75 6d | 65 6e 74 20 74 6f 20 62 |he docum|ent to b|
|00005ea0| 65 20 69 6e 73 65 72 74 | 65 64 2e 20 20 49 66 20 |e insert|ed. If |
|00005eb0| 41 4c 4c 20 6f 66 20 74 | 68 65 20 63 75 72 72 65 |ALL of t|he curre|
|00005ec0| 6e 74 0d 23 20 64 6f 63 | 75 6d 65 6e 74 20 69 73 |nt.# doc|ument is|
|00005ed0| 20 73 65 6c 65 63 74 65 | 64 2c 20 74 68 65 6e 20 | selecte|d, then |
|00005ee0| 74 68 65 20 72 6f 75 74 | 69 6e 65 20 77 72 61 70 |the rout|ine wrap|
|00005ef0| 73 20 74 68 65 20 74 65 | 78 74 20 69 6e 73 69 64 |s the te|xt insid|
|00005f00| 65 20 61 0d 23 20 67 65 | 6e 65 72 69 63 20 64 6f |e a.# ge|neric do|
|00005f10| 63 75 6d 65 6e 74 20 74 | 65 6d 70 6c 61 74 65 2e |cument t|emplate.|
|00005f20| 20 20 49 66 20 74 68 65 | 20 66 69 6c 65 20 69 73 | If the| file is|
|00005f30| 20 65 6d 70 74 79 2c 20 | 61 20 62 75 6c 6c 65 74 | empty, |a bullet|
|00005f40| 20 69 73 20 0d 23 20 69 | 6e 73 65 72 74 65 64 20 | is .# i|nserted |
|00005f50| 69 6e 20 70 6c 61 63 65 | 20 6f 66 20 74 68 65 20 |in place| of the |
|00005f60| 64 6f 63 75 6d 65 6e 74 | 20 62 6f 64 79 2e 20 20 |document| body. |
|00005f70| 49 66 20 6e 65 69 74 68 | 65 72 20 6f 66 20 74 68 |If neith|er of th|
|00005f80| 65 73 65 20 0d 23 20 63 | 6f 6e 64 69 74 69 6f 6e |ese .# c|ondition|
|00005f90| 73 20 69 73 20 74 72 75 | 65 2c 20 6e 6f 20 61 63 |s is tru|e, no ac|
|00005fa0| 74 69 6f 6e 20 69 73 20 | 74 61 6b 65 6e 2e 20 20 |tion is |taken. |
|00005fb0| 52 65 74 75 72 6e 73 20 | 74 72 75 65 20 69 66 20 |Returns |true if |
|00005fc0| 0d 23 20 77 72 61 70 70 | 69 6e 67 20 6f 63 63 75 |.# wrapp|ing occu|
|00005fd0| 72 73 2c 20 61 6e 64 20 | 66 61 6c 73 65 20 6f 74 |rs, and |false ot|
|00005fe0| 68 65 72 77 69 73 65 2e | 0d 70 72 6f 63 20 77 72 |herwise.|.proc wr|
|00005ff0| 61 70 44 6f 63 75 6d 65 | 6e 74 20 7b 63 6c 61 73 |apDocume|nt {clas|
|00006000| 73 4e 61 6d 65 7d 20 7b | 0d 09 67 6c 6f 62 61 6c |sName} {|..global|
|00006010| 20 54 65 58 6d 6f 64 65 | 56 61 72 73 0d 09 69 66 | TeXmode|Vars..if|
|00006020| 20 7b 20 5b 69 73 45 6d | 70 74 79 46 69 6c 65 5d | { [isEm|ptyFile]|
|00006030| 20 7d 20 74 68 65 6e 20 | 7b 0d 09 09 61 70 70 65 | } then |{...appe|
|00006040| 6e 64 20 62 6f 64 79 20 | 22 5c 72 a5 5c 72 5c 72 |nd body |"\r.\r\r|
|00006050| 22 0d 23 20 09 09 73 65 | 74 20 72 65 74 75 72 6e |".# ..se|t return|
|00006060| 46 6c 61 67 20 30 0d 09 | 7d 20 65 6c 73 65 20 7b |Flag 0..|} else {|
|00006070| 0d 09 09 69 66 20 7b 5b | 69 73 44 6f 63 75 6d 65 |...if {[|isDocume|
|00006080| 6e 74 53 65 6c 65 63 74 | 65 64 5d 7d 20 74 68 65 |ntSelect|ed]} the|
|00006090| 6e 20 7b 0d 09 09 09 73 | 65 74 20 74 65 78 74 20 |n {....s|et text |
|000060a0| 5b 67 65 74 53 65 6c 65 | 63 74 5d 0d 09 09 09 61 |[getSele|ct]....a|
|000060b0| 70 70 65 6e 64 20 62 6f | 64 79 20 22 5c 72 24 74 |ppend bo|dy "\r$t|
|000060c0| 65 78 74 5c 72 22 0d 23 | 20 09 09 09 73 65 74 20 |ext\r".#| ...set |
|000060d0| 72 65 74 75 72 6e 46 6c | 61 67 20 31 0d 09 09 7d |returnFl|ag 1...}|
|000060e0| 20 65 6c 73 65 20 7b 0d | 09 09 09 69 66 20 7b 20 | else {.|...if { |
|000060f0| 24 54 65 58 6d 6f 64 65 | 56 61 72 73 28 73 65 61 |$TeXmode|Vars(sea|
|00006100| 72 63 68 4e 6f 69 73 69 | 6c 79 29 20 7d 20 7b 62 |rchNoisi|ly) } {b|
|00006110| 65 65 70 7d 0d 09 09 09 | 61 6c 65 72 74 6e 6f 74 |eep}....|alertnot|
|00006120| 65 20 22 6e 6f 6e 65 6d | 70 74 79 20 66 69 6c 65 |e "nonem|pty file|
|00006130| 3a 20 20 64 65 6c 65 74 | 65 20 74 65 78 74 20 6f |: delet|e text o|
|00006140| 72 20 5c 27 53 65 6c 65 | 63 74 20 41 6c 6c 5c 27 |r \'Sele|ct All\'|
|00006150| 5c 0d 09 09 09 09 66 72 | 6f 6d 20 74 68 65 20 45 |\.....fr|om the E|
|00006160| 64 69 74 20 6d 65 6e 75 | 22 0d 09 09 09 72 65 74 |dit menu|"....ret|
|00006170| 75 72 6e 20 30 0d 09 09 | 7d 0d 09 7d 0d 09 73 65 |urn 0...|}..}..se|
|00006180| 74 20 64 6f 63 53 74 72 | 20 22 5c 5c 64 6f 63 75 |t docStr| "\\docu|
|00006190| 6d 65 6e 74 63 6c 61 73 | 73 5c 5b a5 5c 5d 7b 24 |mentclas|s\[.\]{$|
|000061a0| 63 6c 61 73 73 4e 61 6d | 65 7d 5c 72 22 0d 09 61 |classNam|e}\r"..a|
|000061b0| 70 70 65 6e 64 20 64 6f | 63 53 74 72 20 22 5c 5c |ppend do|cStr "\\|
|000061c0| 75 73 65 70 61 63 6b 61 | 67 65 5c 5b a5 5c 5d 7b |usepacka|ge\[.\]{|
|000061d0| a5 7d 5c 72 5c 72 a5 5c | 72 5c 72 22 0d 09 61 70 |.}\r\r.\|r\r"..ap|
|000061e0| 70 65 6e 64 20 64 6f 63 | 53 74 72 20 5b 62 75 69 |pend doc|Str [bui|
|000061f0| 6c 64 45 6e 76 69 72 6f | 6e 6d 65 6e 74 20 22 64 |ldEnviro|nment "d|
|00006200| 6f 63 75 6d 65 6e 74 22 | 20 22 22 20 24 62 6f 64 |ocument"| "" $bod|
|00006210| 79 20 22 5c 72 22 5d 0d | 09 73 65 74 20 73 74 61 |y "\r"].|.set sta|
|00006220| 72 74 20 5b 67 65 74 50 | 6f 73 5d 0d 09 73 65 74 |rt [getP|os]..set|
|00006230| 20 65 6e 64 20 5b 73 65 | 6c 45 6e 64 5d 0d 09 72 | end [se|lEnd]..r|
|00006240| 65 70 6c 61 63 65 54 65 | 78 74 20 24 73 74 61 72 |eplaceTe|xt $star|
|00006250| 74 20 24 65 6e 64 20 24 | 64 6f 63 53 74 72 0d 09 |t $end $|docStr..|
|00006260| 67 6f 74 6f 20 24 73 74 | 61 72 74 0d 23 20 09 72 |goto $st|art.# .r|
|00006270| 65 74 75 72 6e 20 24 72 | 65 74 75 72 6e 46 6c 61 |eturn $r|eturnFla|
|00006280| 67 0d 09 72 65 74 75 72 | 6e 20 31 0d 7d 0d 0d 23 |g..retur|n 1.}..#|
|00006290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000062a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000062b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000062c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000062d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 23 20 42 6f 6f |--------|--.# Boo|
|000062e0| 6c 65 61 6e 73 20 74 6f | 20 64 65 74 65 72 6d 69 |leans to| determi|
|000062f0| 6e 65 20 74 68 65 20 6c | 6f 63 61 74 69 6f 6e 20 |ne the l|ocation |
|00006300| 6f 66 20 74 68 65 20 69 | 6e 73 65 72 74 69 6f 6e |of the i|nsertion|
|00006310| 20 70 6f 69 6e 74 0d 23 | 2d 2d 2d 2d 2d 2d 2d 2d | point.#|--------|
|00006320| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006330| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006340| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006360| 2d 2d 0d 0d 23 20 52 65 | 74 75 72 6e 20 74 72 75 |--..# Re|turn tru|
|00006370| 65 20 69 66 20 74 68 65 | 20 69 6e 73 65 72 74 69 |e if the| inserti|
|00006380| 6f 6e 20 70 6f 69 6e 74 | 20 69 73 20 62 65 66 6f |on point| is befo|
|00006390| 72 65 20 74 68 65 20 70 | 72 65 61 6d 62 6c 65 2c |re the p|reamble,|
|000063a0| 20 61 6e 64 20 0d 23 20 | 66 61 6c 73 65 20 6f 74 | and .# |false ot|
|000063b0| 68 65 72 77 69 73 65 2e | 20 20 20 44 65 66 69 6e |herwise.| Defin|
|000063c0| 65 20 22 62 65 66 6f 72 | 65 20 74 68 65 20 70 72 |e "befor|e the pr|
|000063d0| 65 61 6d 62 6c 65 22 20 | 74 6f 20 62 65 20 61 6c |eamble" |to be al|
|000063e0| 6c 20 74 65 78 74 20 74 | 6f 20 0d 23 20 74 68 65 |l text t|o .# the|
|000063f0| 20 6c 65 66 74 20 6f 66 | 20 22 5c 22 20 69 6e 20 | left of| "\" in |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.